Как читать данные реестра из C # - PullRequest
0 голосов
/ 17 мая 2019

В моей программе на c # я запускаю процесс python.В настоящее время я использую жестко заданный путь для python.exe, но я хочу использовать реестр Windows, чтобы вернуть мне путь.

Я нашел информацию о пути к python в реестре Windows в разделе: HKEY_CURRENT_USER\Software\Python\PythonCore\3.7-32\InstallPath

, немного погуглив, я нашел следующее решение: https://stackoverflow.com/a/18234755/7183609

, но когда я запускаю свой код, переменная key всегда равна нулю

try
{
    using (RegistryKey key = Registry.LocalMachine.OpenSubKey("Software\\Python\\PythonCore\\3.7-32\\InstallPath"))
    {
        if (key != null)
        {
            // do things
        }
    }
}
catch (Exception ex)
{
    // do other things
}

Ячто-то не так, нужно ли что-то добавить, чтобы это работало?

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

Используйте Registry.CurrentUser вместо Registry.LocalMachine

try
    {
        using (RegistryKey key = Registry.CurrentUser.OpenSubKey("Software\\Python\\PythonCore\\3.7-32\\InstallPath"))
        {
            if (key != null)
            {
                // do things
            }
        }
    }
    catch (Exception ex)
    {
        // do other things
    }
0 голосов
/ 17 мая 2019

Джон Ву указал, что LocalMachine был неправ.

изменен

using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@"HKEY_CURRENT_USER\Software\Python\PythonCore\3.7-32\InstallPath"))

до

using (RegistryKey key = Registry.CurrentUser.OpenSubKey(@"HKEY_CURRENT_USER\Software\Python\PythonCore\3.7-32\InstallPath"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...