2011-10-05 96 views
62

我需要我的軟件能夠在Windows Vista上以管理員身份運行(如果有人在沒有管理權限的情況下運行它,它會崩潰)。如何在程序啓動時請求管理員權限?

當啓動其他軟件時,我看到系統提示「此軟件將以管理員身份運行,您要繼續嗎?」當應用程序試圖獲得管理權限時。

如何在Windows Vista上運行c#應用程序時請求管理權限?

+4

請不要忘記,這樣做只隱藏了潛在的問題,它不能解決它。即使你的程序確實需要管理員權限,它也不會崩潰,如果它沒有得到它們。最可能的原因是您無法在系統調用後檢查錯誤情況。 –

回答

106

以下添加到您的清單文件:

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

您還可以使用highestAvailable的水平。

看吧有關嵌入清單文件:

http://msdn.microsoft.com/en-us/library/bb756929.aspx

PS:如果你沒有一個清單文件,你可以方便地添加一個新問題:

在Visual Studio中,右鍵點擊項目 - >添加項目 - >選擇應用程序清單文件(在Visual C#項目的常規下)

添加的文件將已經具有上述部分,只需將級別更改爲requireAdministratorasInvoker

+2

幫我瞭解添加清單文件的信息!謝謝 – swdev

+0

值得一提的是,如果您以這種方式在VS中添加應用程序清單文件,那麼您將獲得一個包含許多其他選項的模板(例如,說您的應用程序僅適用於Windows 10及更高版本。)在VS2017上測試。 –

12

將這個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> 
0

對於F#的Visual Studio 2013 ,包括使用FSharp編譯器的/win32manifest標誌請求管理員提升的清單文件,如下所示。因此,考慮名爲「APP.EXE」項目輸出

  1. 創建一個包含以下內容(爲了方便起見,文件可能會在文件中添加 到項目,確保它的 Build ActionNone' and複製到輸出。 .. is不要複製. By convention such a file is named 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> 
    
  2. 編輯該項目的對話構建面板的Other flags:輸入字段包括以下內容:/win32manifest:<ApplicationManifestFile>。例如,在這種情況下,/win32manifest:App.Exe.manifest

相關問題