win7のUACの権限の問題の下で実行されているVCプログラム

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);

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で再現

おすすめ

転載: blog.csdn.net/weixin_34195364/article/details/91153253