win7のは、不十分なUACの権限の問題になりがちVCプログラムで実行し、次は、管理者権限を取得するには、いくつかの方法があります
1、コード昇降ユーザ権限を介して、次のように
BOOL UpgradeProcessPrivilege(HANDLE hProcess, LPCTSTR lpPrivilegeName )
{
HANDLE hToken = NULL;
if(OpenProcessToken(hProcess, TOKEN_ALL_ACCESS, &hToken))
{
LUID Luid;
if(LookupPrivilegeValue(NULL, lpPrivilegeName, &Luid))
{
TOKEN_PRIVILEGES tp;
tp.PrivilegeCount = 1;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
tp.Privileges[0].Luid = Luid;
return( AdjustTokenPrivileges(hToken, FALSE, &tp, 0, NULL, NULL) );
}
}
return FALSE;
}
// 使用
UpgradeProcessPrivilege(GetCurrentProcess(), SE_DEBUG_NAME);
- 参考リンク:使用法は、次のような権限-OpenProcessToken処理機能昇格
コードのアップグレードプロセスの特権
権利に言及し_、Windowsのコアプログラミングを
権限強化するために、[概要]のユーザー権限の設定とプロセスを
、私は試していないが、Baiduのクォータバディがでと言ったこのCODEのをそこにデスクトップ上の問題はありませんが、死ぬために他の場所にコピーします。
2、インポートマニフェストファイル
あなたはVC6以上IDEを使用している場合は、マニフェストファイルをインポートすることで解決
<?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="IsUserAdmin"
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>
注:このファイルは限り拡張子がマニフェストファイル名であるとして任意でよいです。ファイルの内容のname属性の値も任意でよいです。(VC6.0でテスト)
リソースファイルにファイル「輸入」、リソースタイプは、1のリソースID 24で、注:試験は、24リソースタイプ、リソースID 1でなければなりません、
再編集し、それは、Windows7の下のプログラムアイコンが小さな盾形のアイコンが表示されている、ダブルクリックして実行]ダイアログボックスが表示されます昇格管理者権限が必要です。
3、またはそれはVS2008 2010、であれば実行レベルコネクタUACマニフェストファイルへ
右--- ---直接プロジェクトのプロパティコネクタ--- --- UACマニフェストファイルの実行レベル選択requireAdministratorの再コンパイル
だからあなたのプログラムは、直接アップを実行するには、管理者権限を持っています。プログラムが盾となります。
私はこの方法でいくつかの手順を使用してコンパイルVS2010を使用しているので、何の問題が見つかりませんでした
4、レジストリを変更:
Windowsレジストリエディタバージョン5.00
[ます。HKEY_CURRENT_USER \ Software \ Microsoft \ Windows NTの\ CurrentVersionの\ AppCompatFlagsレイヤー\]
"C:\プログラムファイル\ win7test2.exe" = "RUNASADMIN"
\プログラムファイル\のwin7test2.exeは、実際のアプリケーションに対応するために変更し、実行するためにダブルクリックして:Cに基づいて、.regファイルとして上記の内容を保存します。
このメソッドは、アプリケーションのアイコンである後盾形のアイコンを持っていませんが、まだ実行されますポップアップダイアログボックスをダブルクリックして昇格した権限が必要です。
参考リンク:win7のは、UACアクセス許可の問題VCのプログラムの下で実行
ます。https://www.jianshu.com/p/015a5b9c5e28で再現