2011-10-05 11 views
62

Windows Vistaで管理者権限で実行できるようにするにはソフトウェアが必要です(誰かが管理者権限なしで実行するとクラッシュする)。プログラムの開始時に管理者のアクセス許可を要求する方法?

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

Windows VistaでC#アプリケーションを実行する際に管理者権限を要求するにはどうすればよいですか?あなたはまた、レベルのためhighestAvailableを使用することができます

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

+4

これを実行すると、根本的な問題が隠されるだけで、修正されないことを忘れないでください。プログラムに実際に管理者権限が必要な場合でも、取得しないとクラッシュしません。最も可能性の高い原因は、システムコールの後にエラー状態がないかどうかをチェックしていないことです。 –

答えて

106

は、マニフェストファイルに次の行を追加します。マニフェストファイルを埋め込むことについて、ここで

ルック:

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

PS:あなたがマニフェストファイルを持っていない場合、あなたは簡単に新しいものを追加することができます

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

追加されたファイルには既に上記の部分があります。レベルをrequireAdministratorからに変更しますあなたがマニフェストでrequestedExecutionLevelトークンを使用する必要があります0

+2

マニフェストファイルの追加に関する情報をたくさん教えてください!ありがとう – swdev

+0

言及しておきたいことは、この方法でアプリケーションマニフェストファイルをVSに追加すると、他にもたくさんのオプションがあります(アプリケーションがWindows 10以上でしか動作しないということです)。VS2017でテストしました。 –

12

はyourexename.exe.manifestと呼ばれる:F#のVisual Studio 2013の場合

<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

をこれには、FSharpコンパイラの/win32manifestフラグを使用して管理者の昇格を要求するマニフェストファイルが含まれています。だから、

  1. がプロジェクトに ファイルを追加することが便宜的に以下の内容(を持つファイルを作成する「APP.EXE」という名前のプロジェクト出力を与えられた。それは Build Actionが出力にNone' andコピーであるということを確認してください。 .. is. By convention such a file is named App.Exe.manifest`をコピーしないでください。あなたがuiAccess(User Interface)を必要とする場合は、 アセンブリは厳密な名前を指定する必要があります。

    <?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です。

関連する問題