2009-01-30 6 views
0

У меня есть служба Windows, которая запускается как зарегистрированный пользователь (локальный администратор). Во время запуска я получаю сообщение по строкам: «Невозможно создать временный класс (результат = 1)». Итак, я пошел в папку windows/temp и был запрошен UAC для повышения моих прав - после того, как я это сделал, служба запустится нормально. Итак, как мне работать с этим приглашением UAC с точки зрения службы Windows?Служба Windows, работающая как зарегистрированный пользователь, имеет проблемы с доступом b/c UAC

Спасибо!

ответ

2

Относительно оригинального вопроса - за пределами конкретной задачи заказа события, которая фиксировала ваши симптомы.

Когда пользователь, входящий в группу локальных администраторов, входит в систему под управлением UAC, предоставляются два токена безопасности - один с ограниченными правами и один с более высоким набором разрешений. По умолчанию используются более низкие разрешения - если не указано активное значение. Основным средством определения является пользовательский интерфейс - как и вы. Другой метод - использовать манифест приложения: XML-файл, который указывает, как ОС должна лечить это приложение. Файл манифеста должен быть помещен в той же папке, что и исполняемый файл, и с именем, используя следующий формат: «my_application_name.exe.manifest»

XML, в манифесте будет выглядеть примерно так:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" name="MY_APPLICATION_NAME" type="win32"/> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator"/> </requestedPrivileges> </security> </trustInfo> </assembly>
Я уверен, вы можете найти кучу более подробной информации по googling «UAC Manifest» ...

Надеюсь, это полезно ...

0

Я решил свою проблему, хотя я до сих пор не знаю, как ответить на мой вопрос. В принципе, моя служба наследовала каталог temp из процесса начальной загрузки, поэтому я изменил его, чтобы использовать временную директорию пользователей текущего пользователя. Вам нужно будет сделать что-то вдоль этих линий:

myProcess.StartInfo.EnvironmentVariables.Add ("TempPath", "C: \ Temp")

0

Почему нет службы Windows работать как LocalSystem?