что не так с этим кодом, чтобы прочитать определенное значение реестра в подразделе, а затем сделать заявление, если существует / если нет - PullRequest
0 голосов
/ 27 июля 2010

хорошо, с некоторой помощью с этого сайта и мечтой в коде, я исправил свою ошибку, но теперь код просто не работает. Вот код:

using (RegistryKey Key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run\"))
if (Key != null)
{
    string val = (string)Key.GetValue("COMODO Internet Security");
    if (val == null)
    {
        MessageBox.Show("value not found");
    }
    else
    {
        // use the value
    }
}
else
{
    MessageBox.Show("key not found");
}

и когда я его использую, он выдает окно сообщения «значение не найдено», как и предполагалось, если оно не существует, единственная проблема заключается в значении, которое существует… я проверил вручную через regedit. так что не так?

1 Ответ

1 голос
/ 27 июля 2010

Возможно, у вас проблема с запросом значений реестра ключа HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run в 64-разрядной операционной системе из 32-разрядного приложения.В случае, если вы увидите значения только в HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run (см. http://msdn.microsoft.com/en-us/library/aa384232.aspx). Если вы используете неуправляемый API (или invoce), вы можете открыть ключ запуска с флагами RegOpenKeyEx и KEY_QUERY_VALUE | KEY_WOW64_64KEY (см. http://msdn.microsoft.com/en-us/library/aa384129.aspx). Перед использованием флага KEY_QUERY_VALUE | KEY_WOW64_64KEY следует проверить, работает ли приложение под 64-разрядной операционной системой. В случае 32-разрядной операционной системы следует использовать только флаг KEY_QUERY_VALUE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...