Server 2008 не может установить права пользователя - PullRequest
3 голосов
/ 04 октября 2010

Я попытался сделать кое-что из Win32 в C # 3.5, чтобы получить повышенные права пользователя для консольного приложения. Я разрабатываю на Visual Studio 2008 SP1 / GDR, и все работает нормально при запуске под отладчиком. Все также работает нормально, когда я запускаю консольное приложение автономно. Все также работает нормально, когда я упаковываю все в MSI, устанавливаю его на сервер 2003 и запускаю консольное приложение.

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

Unable to set right for the account "DOMAIN\QAUSER": SeCreateGlobalPrivilege
System.UnauthorizedAccessException    Attempted to perform an unauthorized operation.

Я не могу ожидать, что мои администраторы развертывания / сервера будут что-либо делать с моим приложением, кроме как установить его, и они не собираются отключать UAC. Должен быть какой-то программный способ правильно установить права пользователя, который я могу добавить в консольное приложение - кто-нибудь знает, как?

Спасибо.

Ответы [ 2 ]

1 голос
/ 18 октября 2010

Возможно, вы используете префикс " Global \" к имени объекта в вашем приложении, и ваше приложение будет запущено в сеансе сервера узла сеансов удаленных рабочих столов (RD Session Host). В случае, если ваша программа должна включить привилегию SE_CREATE_GLOBAL_NAME (SeCreateGlobalPrivilege). См. C # - Как включить SeDebugPrivilege? (но использовать SE_CREATE_GLOBAL_NAME вместо SE_DEBUG_NAME) или Управление привилегиями в управляемом коде, например, надежно, безопасно и эффективно .

0 голосов
/ 12 октября 2010

Я предполагаю, что UAC включен на машине 2008 года, и я пока не могу прокомментировать ваш вопрос.

Если это так, убедитесь, что в файле app.manifest в VS (в свойствах) измените

<requestedExecutionLevel  level="asInvoker" uiAccess="false" />

до

<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

Даже если код работает от имени администратора, вы должны получить предупреждение UAC.

...