Запись в реестре существует, но иногда я не могу ее прочитать

0

Вопрос

Я много раз читал этот параметр реестра, но иногда нет. Такое случается очень редко, но у моего клиента это был несчастный случай.

Нормально ли, что иногда когда-либо запись существует в реестре Windows, я становлюсь значением по умолчанию вместо реально существующей записи?

Один и тот же пользователь 100 раз читает реестр и немного позже получает значение по умолчанию.

public int GetDrukujSaldoOdbiorcy(int DefaultValue)
        {
            int result = DefaultValue;
            try
            {
                RegistryKey regKey = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\BRMLM\MERA\USER_PARAM\Drukowanie");
                if (regKey != null)
                {
                    result = (int)regKey.GetValue("DrukujSaldoOdbiorcy", DefaultValue);
                    regKey.Close();
                }
                
            }
c# registry
2021-11-23 13:38:29
1

Лучший ответ

1

Возможно, у вас нет разрешения на чтение из реестра. Вам нужно будет понять, какие разрешения у вашего приложения на клиентском компьютере. В своем коде вы должны сначала проверить, можете ли вы прочитать его так:

public static bool CanReadKey(this RegistryPermission reg, string key)
{
    try
    {
        RegistryPermission r = new RegistryPermission(RegistryPermissionAccess.Read, key);
        r.Demand();
        return true;
    }
    catch (SecurityException)
    {
        return false;
    }
}

В вашем случае это всегда значение по умолчанию, когда ключ не может быть прочитан, потому что try поймает исключение и result значение остается с инициализацией по умолчанию, которая у вас есть перед try.

2021-11-23 13:48:42

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................