Как сохранить путь приложения к переменной с помощью реестра - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь сохранить путь приложения к переменной с помощью реестра.

Чего я хочу добиться:

1) Проверьте, есть ли у этого приложения запись вреестр?(если он был установлен или нет)

2) Если да, я хочу сохранить путь к переменной, которую я смогу использовать позже, чтобы использовать программу, расположенную по этому пути

Такдалеко я получил

    public void Run1()
    {
        Console.WriteLine("Reading OCR path from registry");
        string keyName = @"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Tomcat\Common";
        string valueName = "OCR_path";
        string OCRPath = Microsoft.Win32.Registry.GetValue(keyName, valueName, null) as string;
        if (string.IsNullOrWhiteSpace(OCRPath))
        {
            string text = "3";
            System.IO.File.WriteAllText(@"C:\Users\Public\TestFolder\OCR-Toolkit-Check.txt", text);
        }
    }

Ответы [ 3 ]

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

Боже мой, не задавай жестко "Wow6432Node". Вы можете избежать неприятностей с этим в 64-битной системе, открывая реестр в 64-битном режиме, но если вы откроете реестр в 32-битном режиме, это создаст ужасную вещь, которую вы не хотите видеть. Кроме того, если у вас 32-разрядная ОС, папка «Wow6432Node» не должна быть, поэтому вы в конечном итоге будете создавать вещи там, где этого не следует.

Если вам не требуется открывать реестр, используя только привилегии, и вы можете полагаться на разрешения пользователя для создания / открытия / чтения ключей, то у Microsoft уже есть Microsoft.Win32.Registry, чтобы помочь вам.

string sPath = null;
RegistryKey hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
RegistryKey appKey = hklm.OpenSubKey(@"SOFTWARE\Tomcat\Common");

if(appKey != null)
{
    object oPath = appKey.GetValue("OCR_path", null);
    if(oPath != null && oPath is string)
    {
        sPath = oPath.ToString();
    }
}
0 голосов
/ 18 мая 2018

Я использовал другой подход, и теперь он работает.Путь сохраняется в переменной OCRPath

    public void Run1()
{
    Console.WriteLine("Reading OCR path from registry");
    string keyName = @"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Tomcat\Common";
    string valueName = "OCR_path";
    string OCRPath = Microsoft.Win32.Registry.GetValue(keyName, valueName, null) as string;
    if (string.IsNullOrWhiteSpace(OCRPath))
    {
        string text = "3";
        System.IO.File.WriteAllText(@"C:\Users\Public\TestFolder\OCR-Toolkit-Check.txt", text);
    }
}
0 голосов
/ 17 мая 2018
    Console.WriteLine("Reading OCR path from Registry:");
    string keyName = @"HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Tomcat\Common";
    string valueName = "OCR_path";
    if (Microsoft.Win32.Registry.GetValue(keyName, valueName, null) != null)
    {
        object variable = Microsoft.Win32.Registry.GetValue(keyName, valueName, null);
    }

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

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