C # Реестр проблема - PullRequest
       5

C # Реестр проблема

0 голосов
/ 13 октября 2011

Это работает в фоновом режиме работника Похоже, проблема связана с проверкой реестра, если в ключе FS отсутствует ошибка. Я делаю эту проверку на тот случай, если кто-то удалит ее, хотя установщик добавляет значения. Также интересно, почему окна сообщений не работают

    //I DONT EVEN GET TO THIS MESSAGE BOX BEFORE THE ERROR
    //BUT THE CATCH IS TRIGGERED FROM THE TRY BLOCK
    MessageBox.Show("Entered Version Check");
    try
    {
        //DONT GET TO SEE THIS MESSAGE BOX
        MessageBox.Show("Entered try");
        DirectoryInfo Temp = new DirectoryInfo(Path.GetTempPath());
        RegistryKey rk = Registry.LocalMachine.OpenSubKey("Software\\My Application Here");
        string val;
        if (rk != null)
            {
                val = rk.GetValue("FS").ToString();
                if (val == null)
                {
                    MessageBox.Show("It appears that you do not have a File Server IP address configured" + Environment.NewLine + "Please login to the admin tools and set it", "No File Server Set", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
            }

Ответы [ 2 ]

1 голос
/ 13 октября 2011
            val = rk.GetValue("FS").ToString();

Это будет бомба, если GetValue () вернет ноль. Сначала проверьте нулевое значение, прежде чем пытаться выполнить ToString (). И добавьте проверку в обработчик событий RunWorkerCompleted BGW, чтобы вы могли проверить e.Error. И не отображайте окна сообщений в рабочем потоке, есть вероятность, что они исчезнут за окном другого приложения, включая ваше собственное.

1 голос
/ 13 октября 2011

Самая распространенная проблема, с которой я сталкивался, связана с перенаправлением 64-битного реестра Вы работаете на 64-битной ОС, а ваше приложение скомпилировано как 32-битное? Если это так, то вызовы реестра будут перенаправлены.

Либо найдите ключ под ключом HKLM\SOFTWARE\Wow6432Node, либо скомпилируйте приложение как 64-битное.

...