Я не могу прочитать значения реестра из службы - PullRequest
4 голосов
/ 20 марта 2011

В моем сервисе у меня есть следующая функция для получения некоторых значений из моего реестра:

 Public Function GetKeyValue(ByVal nKey As String, ByVal sPath As String) As String
        Dim RegKey As RegistryKey
        Dim kValue As String = Nothing
        Dim Pos As String
        If CheckRegistry(sPath) Then
            Try
                RegKey = Registry.CurrentUser.OpenSubKey(sPath)
                kValue = CStr(RegKey.GetValue(nKey))

            Catch ex As Exception
                StartLogFile(" GetKeyValue " & vbNewLine & "Stack Trace= " & ex.StackTrace, EventLogEntryType.Warning)
            End Try
        End If
        Return kValue
    End Function

та же функция прекрасно работает в форме Windows, но если я позвоню из службы, она сможетне читайте значение.Кто-нибудь знает, что происходит?

Ответы [ 3 ]

4 голосов
/ 20 марта 2011

Вы не должны хранить свои данные в HKEY_CURRENT_USER, но в HKEY_LOCAL_MACHINE, что более целесообразно для Windows-службы.

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

3 голосов
/ 20 марта 2011

Вы почти наверняка читаете настройки реестра другого пользователя. Скорее всего, служба работает как одна из встроенных учетных записей пользователей службы: SYSTEM, LOCALSERVICE или NETWORKSERVICE. Это не интерактивные пользователи.

Ваш дизайн в корне ошибочен, и я подозреваю, что вам нужно будет перенести эти настройки в файл, который не является частью профиля пользователя.

1 голос
/ 20 марта 2011

Работает ли ваш сервис под тем же пользователем, что и приложение Windows Forms? Если нет, настройте его на запуск от имени того же пользователя.

Вам нужно будет сохранить его как CurrentMachine.

...