LocalApplicationData отличается в сервисных программах от консольных приложений - PullRequest
0 голосов
/ 13 марта 2020

Я создаю службу, которая обращается к пути к папке:

string localAppDataFolderPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);

К сожалению, возвращенная папка не является:

C: \ Users \ mainuser \ AppData \ Local

... но:

C: \ Windows \ system32 \ config \ systemprofile \ AppData \ Local

...вместо.

mainuser - это пользователь, который в данный момент вошел в систему. Возможно ли для службы запустить программу, размещенную у текущих пользователей AppData\Local? Я знаю, что вы можете go до Services-> Right click Properties-> Log on и ввести пароль и имя учетной записи, но я ищу программное решение c, в идеале использующее sc create command.

Как вариант, я могу переместиться все папки интересуют C:\ProgramData и полностью избегают текущего пользователя. Есть ли способ сохранить файлы в пользователях AppData\Local и использовать программное c решение без пароля?

1 Ответ

0 голосов
/ 13 марта 2020

Короче говоря, Сервисы не запускают (и не должны) запускать программы для пользователей или получать доступ к пользовательской информации в целом (если они не запускаются от имени указанного пользователя). Они представляют собой c пользователей и их профили, их вариант использования - запуск как часть системы

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

. Так работает каждая служба, и норма для windows в течение длительного времени (за исключением драйверов)

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