Читайте HKLM из службы Windows на Windows 7 - PullRequest
2 голосов
/ 17 ноября 2010

Что мне нужно сделать, это прочитать значение строки конкретного приложения из HKLM из службы Windows.Улей реестра и значения были добавлены с помощью формы Windows, инструмента для изменения значений конфигурации для службы Windows.Я не могу прочитать значения из моей службы Windows, «Запрошенный доступ к реестру не разрешен».Я пытаюсь открыть и прочитать следующее:

rk = Registry.LocalMachine.OpenSubKey(key, RegistryKeyPermissionCheck.ReadSubTree);
if (rk != null)
{
   value = rk.GetValue(setting).ToString();
}

Ответы [ 2 ]

2 голосов
/ 17 ноября 2010

Я делаю это из службы Windows .NET прямо сейчас с этим кодом.

   public const string REG_KEY_MINE = @"SOFTWARE\Mine\Test";

using (RegistryKey key = Registry.LocalMachine.OpenSubKey(REG_KEY_MINE, false))
{

    UDP_PORT = (int) key.GetValue("UdpPort", 43221);
    TCP_PORT = (int) key.GetValue("TcpPort", 8005);
}

Таким образом, возможно, вы используете свой сервис не под привилегиями администратора по умолчанию ???

2 голосов
/ 17 ноября 2010

Приложение и служба работают с разными учетными данными? К приложению конфигурации может быть применена виртуализация реестра (http://msdn.microsoft.com/en-us/library/aa965884.aspx).

ИЛИ может быть разница между разрядностью приложения конфигурации и службы и наблюдаются разные представления реестра (http://msdn.microsoft.com/en-us/library/aa384232.aspx).

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