VCはwindows 7の下で管理者権限で実行するプログラムを書く(回転)


方法1:VC 6:manifestファイルのインポート
1.新しいファイルをxxxと名付けます.manifest.内容は次のとおりです.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="X86"
    name="test.exe.manifest"
    type="win32"
/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
        <requestedPrivileges>
            <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
        </requestedPrivileges>
    </security>
</trustInfo>
</assembly> 

 
注意:このファイルは拡張子のみです.manifestファイル名は任意です.ファイル内容のname属性値は任意でもよい.(VC 6.0でテスト)
2.このファイル「import」をリソースファイルに、リソースタイプ24、リソースID 1、
注意:テストされたリソースタイプは24でなければなりません.リソースIDも1でなければなりません.
3.再編集すればいいです.windows 7の下にこのプログラムアイコンには盾状の小さなアイコンがあります.ダブルクリックするとダイアログボックスが表示され、管理者権限に昇格する必要があります.
VC 2005または2008であれば簡単ですが、直接プロジェクトの右クリック---プロパティ---コネクタ---インベントリファイル---uac実行レベルrequireAdministratorを選択して再コンパイルすると、プログラムが直接実行され、管理者権限があります.
C#なら.NET 2005または2008では、appなどのmanifestファイルをプロジェクトに直接追加します.manifest,作成後,のasInvokerをrequireAdministratorに置き換えるとよい.
 
<?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="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <!-- UAC Manifest Options
            If you want to change the Windows User Account Control level replace the 
            requestedExecutionLevel node with one of the following.

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

            If you want to utilize File and Registry Virtualization for backward 
            compatibility then delete the requestedExecutionLevel node.
        -->
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>
</asmv1:assembly>

 
方法2:レジストリを変更するには:
        Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers] "C:\\Program Files\\win7test2.exe"="RUNASADMIN"
上記の内容を.regファイル、ベースにC:\Program Files\win 7 test 2.exeは実環境のアプリケーションアドレスに変更し、ダブルクリックで実行できます.
この方法では、アプリケーションアイコンにシールドアイコンはありませんが、ダブルクリックして実行してもダイアログボックスが表示され、権限の向上が要求されます.
付:XPスタイルのmanifest
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">  
<dependency>  
  <dependentAssembly>  
  <assemblyIdentity  
  type="win32"  
  name="Microsoft.Windows.Common-Controls"  
  version="6.0.0.0"  
  processorArchitecture="X86"  
  publicKeyToken="6595b64144ccf1df"  
  language="*"  
  />  
  </dependentAssembly>  
</dependency>  
</assembly>