VCはwindows 7の下で管理者権限で実行するプログラムを書く(回転)
方法1:VC 6:manifestファイルのインポート
1.新しいファイルをxxxと名付けます.manifest.内容は次のとおりです.
注意:このファイルは拡張子のみです.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に置き換えるとよい.
方法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
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,作成後,
<?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>