Как прочитать в сервисе значение из реестра?

195
03 февраля 2018, 22:53

Столкнулся с проблемой. Есть WF, в ней есть часть кода по сохранению значения в реестре:

using (RegistryKey rk = Registry.CurrentUser.CreateSubKey(@"Software\Test"))
            {
                rk.SetValue("language", path);
            }

Аналогично, я считываю значение, на это этапе все гуд:

   using (RegistryKey rk = Registry.CurrentUser.CreateSubKey(@"Software\Test"))
    {
        string path = rk.GetValue("language", "").ToString();
    }

Но я пытаюсь считать данное значение из написанного мной СЕРВИСА - ничего нет, ничего не считывается. Подскажите, есть ли какие нюансы при чтении реестра из сервиса? Где искать ошибку и в чем она?

Answer 1

Registry.CurrentUser возвращает ветку текущего пользователя. Если служба запущена под системной учетной записью, то вернется ветка, соответствующая пользователю System.

В зависимости от ситуации можете попробовать:

  1. запускать приложение и службу от одного пользователя;
  2. создавать ключ в Registry.LocalMachine — возможно потребуются дополнительные разрешения;
  3. создавать ключ для пользователя, а в сервисе перебирать ветки пользователей через Registry.Users — возникнут проблемы при параллельной работе пользователя и службы;
  4. обмениваться данными не через реестр (файловую систему, базу данных).
READ ALSO
C# ищу библиотеки/классы для быстропроизводительного наложения фильтра

C# ищу библиотеки/классы для быстропроизводительного наложения фильтра

Накладываю фильтры на входящее с запросом изображение, а потом отправляю обратно Обрабатываю это всё сейчас с помощью Bitmap, очень удобно,...

211
Вычисление упреждения при стрельбе Unity2D (C#)

Вычисление упреждения при стрельбе Unity2D (C#)

Итак, если вы когда- нибудь играли в космические шутеры, то видели, что для кинетического орудия (или любого другого, чьи пули настигают цель...

253
Вопрос о тестировании класса

Вопрос о тестировании класса

Добрый деньПредположим у меня есть примерно такой класс:

252