2010-03-12 73 views
8

如何部署應用程序以便它們需要管理員權限,而不需要最終用戶手動完成?如何以管理員模式運行應用程序?

我使用Delphi 2009構建應用程序。

+0

你用什麼來部署你的程序? (這是非常相關的,因爲你可能需要你的安裝程序生成具有「以管理員身份運行」標誌設置的快捷方式。) – 2010-03-12 14:35:32

回答

11

通過在應用程序清單中使用requestedExecutionLevel元素,您可以通知Windows,您的應用程序需要以管理員身份運行。

清單文件是一個如下所示的XML文件。它應該被命名爲YourApp.exe.manifest並放置在與可執行文件相同的文件夾中。 (也可以嵌入到應用程序的資源,它必須有一個RT_MANIFEST資源類型和1的ID)

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="YourApp" type="win32"/> 
    <description>Description of your application</description> 
    <!-- Identify the application security requirements. --> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
    <security> 
     <requestedPrivileges> 
     <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> 
     </requestedPrivileges> 
    </security> 
    </trustInfo> 
</assembly> 

有關應用程序清單的詳細信息,以及如何創建它們,請參閱Create and Embed an Application Manifest (UAC)在MSDN。

請注意,清單僅在Windows Vista及更高版本中受到尊重。如果您的用戶在Windows XP上以標準用戶身份運行,則您的應用程序將不會以管理員身份啓動;您可能需要編寫代碼來檢測這是否會對您的應用程序造成問題。

+0

我試過你的solutino在delphi xe2上使用新的VCL Forms應用程序,用上面的內容創建一個txt文件從<程序集到/程序集>,嵌入在資源強制ID = 1和RT_MANIFEST廣告類型,我編譯,但後來當我運行它沒有任何反應,我應該期望Windows迫使我作爲管理員運行? – LaBracca 2013-07-02 07:05:47

+0

@ user193655:你是否已關閉UAC?如果是這樣,那麼Windows不會提示你升級。否則,你描述的步驟聽起來是正確的。作爲一個新問題發佈完整的細節可能會更好;可能有一些微妙的Delphi特定問題(我不知道),其他Delphi用戶可以爲您解答。 – 2013-07-02 13:48:06

+0

@BradleyGrainger:來自UAC的地方? – 2017-09-06 07:17:12

2

另一個選項雖然不推薦用於「每天的應用程序」,但是可以使用「Install」或「Setup」作爲名稱的一部分爲您的可執行文件命名。請記住,如果您不更改任何註冊表設置或創建任何新文件,則Windows會向用戶顯示該程序可能未正常運行的警告。

相關問題