[英]How to request administrator permissions when the program starts?
我需要我的軟件能夠在 Windows Vista 上以管理員身份運行(如果有人在沒有管理權限的情況下運行它,它會崩潰)。
在啟動其他軟件時,我看到系統提示“此軟件將以管理員身份運行。您要繼續嗎?” 當應用程序試圖獲取管理權限時。
在 Windows Vista 上運行 c# 應用程序時如何請求管理權限?
將以下內容添加到您的清單文件中:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
您也可以使用highestAvailable
可用的級別。
在這里查看有關嵌入清單文件的信息:
http://msdn.microsoft.com/en-us/library/bb756929.aspx
PS:如果你沒有manifest文件,你可以很容易地添加一個新的:
在 Visual Studio 中,右鍵單擊項目 -> 添加項目 -> 選擇應用程序清單文件(在 Visual C# 項目的常規下)
添加的文件已經有了上面的部分,只需將級別從asInvoker
更改為requireAdministrator
將此 XML 放入名為 yourexename.exe.manifest 的文件中:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="highestAvailable" />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
您需要在清單中使用requestedExecutionLevel
令牌:
對於.Net
( Visual Studio 2013
),包括請求管理員提升的清單文件,並使用編譯器的/win32manifest
標志,編寫並提供請求此提升的清單文件。 但是,以下描述了在 Visual Studio 中為項目名稱App.Exe
:
創建一個包含以下內容的文件(為方便起見,您可以將文件作為開發資源添加到 Visual Studio 項目中,方法是確保它的Build Action
為None
並且Copy to Output...
為Do not copy
。按照慣例,清單文件被命名為在它們的輸出目標之后,在本例中App.Exe.manifest
。如果您需要uiAccess
(用戶界面),則程序集必須是強命名的。
<?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="App" /> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> </requestedPrivileges> </security> </trustInfo> </asmv1:assembly>
編輯項目對話框的構建面板Other flags:
輸入字段以添加win32manifest
標志並讓 Visual Studio 相應地調用編譯器。 例如,在這種情況下,
/win32manifest:App.Exe.manifest
。
請注意以下條目:
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.