2010-10-04 123 views
3

我試圖在C#3.5中執行一些Win32的東西來獲取控制檯應用程序的提升用戶權限。我在Visual Studio 2008 SP1/GDR上開發,並且在調試器下運行時可以正常工作。當我獨立運行控制檯應用程序時,情況也很好。當我將所有東西打包到MSI並安裝到2003服務器上並運行控制檯應用程序時,情況也很好。Server 2008無法設置用戶權限

如果我採取相同的MSI和2008服務器啓用UAC上安裝它,然後運行控制檯應用程序,我得到的消息是這樣的:

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

我不能期望我的部署/服務器管理員做任何與我的應用程序不同的是安裝它,而且它們不會關閉UAC。必須有一些編程方式來正確設置我可以添加到控制檯應用程序的用戶權限 - 任何人都知道如何?

謝謝。

回答

0

我假設在2008年的機器上啓用了UAC,但我還無法評論您的問題以找出答案。

如果是這樣,確保在VS(下性能)的app.manifest文件,更改

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

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

即使代碼運行作爲管理員,你有通過UAC警告。

+0

如何在VS設置影響我的部署應用程序做什麼呢?我覺得應該有東西,我可以編程設置做可能會在VS去配置 – Snowy 2010-10-13 19:22:04

+0

我懷疑你的應用在部署後能夠改變它的運行方式,如果是這樣的話,任何惡意的應用程序可以設置自己,我們會回到西部狂野的XP時代。 VS設置是UAC過程的一部分,它決定構建應用程序需要什麼權限。它仍然必須作爲管理員運行(我認爲),並且在設置更改後,您會看到該圖標上有UAC屏蔽。 – darkstar3d 2010-10-14 02:55:06