由於Vista問世,我的一些.NET應用程序已經開始拋出安全性異常。以管理員身份運行.NET應用程序
我注意到一些應用程序(即我的防病毒軟件,控制面板)有一個小盾牌,當我運行這些應用程序時,管理員權限由我自動從Windows請求。
我知道作爲一個用戶,我可以將應用程序設置爲以管理員身份運行,但這還不夠好,因爲如果應用程序沒有權限運行,它會在我的用戶計算機上崩潰。
有沒有辦法告訴Windows(以編程方式)我希望應用程序以管理權限運行?
由於Vista問世,我的一些.NET應用程序已經開始拋出安全性異常。以管理員身份運行.NET應用程序
我注意到一些應用程序(即我的防病毒軟件,控制面板)有一個小盾牌,當我運行這些應用程序時,管理員權限由我自動從Windows請求。
我知道作爲一個用戶,我可以將應用程序設置爲以管理員身份運行,但這還不夠好,因爲如果應用程序沒有權限運行,它會在我的用戶計算機上崩潰。
有沒有辦法告訴Windows(以編程方式)我希望應用程序以管理權限運行?
您需要將應用程序標記爲需要應用程序清單中的管理員權限。 Here's an article from MSDN Magazine,解釋過程。
創建一個應用程序清單,設定requestedExecutionLevel到requireAdminstrator:
舉例(當您添加應用程序清單由VS生成):
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC Manifest Options
If you want to change the Windows User Account Control level replace the
requestedExecutionLevel node with one of the following.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
If you want to utilize File and Registry Virtualization for backward
compatibility then delete the requestedExecutionLevel node.
-->
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</asmv1:assembly>
如果您添加到一個Visual Studio應用程序項目,它將在編譯時嵌入到您的程序集中。
您應該將應用程序清單添加到您的應用程序,並將其配置爲請求管理員權限。請參閱:http://www.professionalvisualstudio.com/blog/2007/10/05/enabling-your-application-for-uac-on-vista/
另一種解決應用程序啓動時用戶權限的解決方案在此處描述:Pimp my UAC and a few questions about it