webdevqa.jp.net

プログラムの起動時に管理者権限を要求する方法は?

ソフトウェアをWindows Vistaで管理者として実行できるようにする必要があります(誰かが管理者権限なしで実行すると、クラッシュします)。

他のソフトウェアを起動するときに、「このソフトウェアは管理者として実行されます。続行しますか?」などのプロンプトが表示されました。アプリが管理者権限を取得しようとしたとき。

Windows Vistaでc#アプリを実行するときに管理者権限を要求するにはどうすればよいですか?

70
Arsen Zahray

次をマニフェストファイルに追加します。

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

レベルにhighestAvailableを使用することもできます。

マニフェストファイルの埋め込みについてはこちらをご覧ください。

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

PS:マニフェストファイルがない場合、簡単にマニフェストファイルを追加できます。

Visual Studioで、プロジェクト->アイテムの追加->アプリケーションマニフェストファイルの選択(Visual C#アイテムの[全般]の下)を右クリックします。

追加したファイルには既に上記の部分があります。レベルをrequireAdministratorからasInvokerに変更するだけです

123
manojlds

この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>
12
Steve Danner

マニフェストでrequestedExecutionLevelトークンを使用する必要があります。

http://www.developerfusion.com/code/7987/making-a-net-app-run-on-Vista-with-administrator-priviledges/

1
Polynomial

F#Visual Studio 2013では、次のようにFSharpコンパイラの/win32manifestフラグを使用して管理者の昇格を要求するマニフェストファイルが含まれていました。したがって、「App.Exe」という名前のプロジェクト出力が与えられた場合

  1. 次の内容のファイルを作成します(便宜上、プロジェクトにファイルを追加できます。Build ActionNone' andOutput to Copy ...isDo not copy. 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

0
George