#windows #service #installation
#Windows #Обслуживание #установка
Вопрос:
У меня следующая ситуация: я создаю приложение, которому требуется служба. Служба иногда создает файлы и папки для пользователя (фактически она получает файлы, которые затем записывает на диск).
Мои проблемы заключаются в следующем:
-
Если «Обычный пользователь» (т. Е. не администратор) использует приложение (которое включает службу), файлы, которые создает служба, не могут быть даже прочитаны этим пользователем, поскольку у него, как кажется, нет привилегий («доступ запрещен»). Но те же файлы впоследствии могут быть видны пользователям с правами администратора.
-
Если служба создает для пользователя-администратора папку на рабочем столе (я не пробовал использовать назначение, подобное C:), то пользователь-администратор даже не может увидеть папку из-за привилегий (папка не отображается, но, тем не менее, попадает в список, если я использую команду «dir» в cmd; в то время как если я останавливаю службу, папка автоматически удаляется — понятия не имею, почему). Однако я попытался заставить службу создать папку в папке на рабочем столе (папке, которая уже была создана мной ранее), и это сработало правильно.
Итак, я понимаю, что проблема со службой как-то связана с тем, как она установлена / запущена. В настоящее время она находится в «LocalSystem» (я пытался установить ее с помощью cmd с sc.exe команда с «LocalService», но она не распознает «LocalService»).
Итак, есть ли способ заставить мою службу создавать файлы и папки, чтобы пользователи могли читать / записывать их по своему усмотрению?
Если да, то, ПОЖАЛУЙСТА, СКАЖИТЕ МНЕ, как это сделать.
P.S. До сих пор я использовал файл .bat для вызова sc.exe для установки и запуска службы. Это нормально?
Комментарии:
1. Я думаю, вам просто нужно установить дескриптор безопасности непосредственно для файлов / папок.
Ответ №1:
Да, похоже, это ответ: дескрипторы безопасности должны быть установлены явно. Кажется, что одна из причин заключается в том, что файлы фактически создаются в C:WindowsTemp каталог, а затем перемещаются по ожидаемому пути назначения. Однако папки, которые создаются (непосредственно по выбранному пути, например C:UsersAdminDesktopMyFolder ) невидимы. Таким образом, единственным решением, по-видимому, является явная настройка дескрипторов безопасности.