Запись в HKLM из проекта развертывания Visual Studio 2010 - PullRequest
2 голосов
/ 27 июня 2011

У меня есть служба Windows, которая развернута с использованием проекта развертывания VS2010.Я требую, чтобы имя пользователя / пароль было введено в установщик, а затем эти данные были переданы в реестр для использования службой.

Установщик работает нормально, а настраиваемые действия настроены правильно.Если я пытаюсь подключиться к HKLM, я не получаю ни ошибки, ни вывода, эта же команда для HKCU работает нормально.Это то же самое, что и стандартный и административный пользователь (включая RunAs).

public override void Install(IDictionary stateSaver)
{
    base.Install(stateSaver);

    var username = Context.Parameters["username"];
    var password = Context.Parameters["password"];

    // HKLM\Software\MySoftware
    RegistryKey hklm = Registry.LocalMachine.CreateSubKey("SOFTWARE\\MySoftware");
    hklm.SetValue("username", username, RegistryValueKind.String);
    hklm.SetValue("password", password, RegistryValueKind.String);
    hklm.Close();

    // HKCU\Software\MySoftware
    RegistryKey hkcu = Registry.CurrentUser.CreateSubKey("SOFTWARE\\MySoftware");
    hkcu.SetValue("username", username, RegistryValueKind.String);
    hkcu.SetValue("password", password, RegistryValueKind.String);
    hkcu.Close();
}

Я попытался использовать .OpenSubkey (x, true) вместо CreateSubkey (x).Результаты одинаковы.

Любая помощь будет очень признательна.

С уважением

Крис

1 Ответ

4 голосов
/ 27 июня 2011

В 64-разрядной операционной системе вы найдете эти ключи в HKLM \ Software \ Wow6432Node \ MySoftware.Эти разделы реестра виртуализированы для 32-разрядных программ.

...