windows – “このプログラムを管理者として実行する”をプログラム的に設定する方法

私はVistaで古き良き ‘bdeadmin.exeに問題がある。まず、予測可能な応答を邪魔にならないようにしましょう。

「アプリケーションの昇格を要求するべきではありません。」
これはありません。 C’est la vie

「マニフェストファイルを埋め込む必要があります。」
それはすでにコンパイルされています、それは何年も前のことです、それを作成した会社はそれを再びするつもりはありません、そしてそれはマージモジュール(MSMファイル)からインストールされます。

“BDEは時代遅れです。dbExpressを使うべきです”
150万行のコード。 ‘言っ途切れる。

EXEの横にマニフェストファイルをドロップします。
試してみた、何もしなかった。テストとして、その同じマニフェストファイルが他のいくつかのEXEファイルに昇格を要求させることができました。私が望んでいたものではありませんでした。そこに何かがあると、外部の目録が読めなくなります。

「ショートカットを作成してSLDF_RUNAS_USERを設定します。」
それができない、それはコントロールパネルアプレットです。

機能した唯一のことは、そのプロパティウィンドウの互換性タブの下に「このプログラムを管理者として実行する」を設定することでした。ユーザーにこれをするように言う必要はありません。ビジネスには向いていません。私はインストーラにこれをさせる必要があります。 MSMファイルは静的パスを使用します。

何か案は?

ベストアンサー
単純なレジストリキーを設定することによって、プログラムで「このプログラムを管理者として実行する」フラグ(EXEのプロパティの[互換性]タブにあるオプション)を設定できます。これらのキーの1つの下に文字列値(REG_SZ)を作成する必要があります(それぞれ設定をユーザーごとまたはマシンごとにする場合)。

HKEY_CURRENT_USER\Software\Microsoft\Windows
NT\CurrentVersion\AppCompatFlags\Layers

または

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\AppCompatFlags\Layers

値の名前は実行可能ファイルへのフルパスである必要があり(パスにスペースが含まれる場合は、パスを引用符で囲まないでください)、値のデータにはストリングRUNASADMINを含める必要があります。

サンプル用:

reg.exe Add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\Program Files\MyApp\Test.exe" /d "PUT__VALUE__HERE"

互換モード

WIN95ウィンドウズ95
WIN98 Windows 98
WIN4SP5 Windows NT 4.0 SP5
WIN2000ウィンドウズ2000
WINXPSP2 Windows XP SP2
WINXPSP3 Windows XP SP3
ビスタビスタ
VISTASP1 Vista SP1
VISTASP 2 Vista SP2
WIN7RTM Windows 7
WINSRV03SP1 Windows Server 2003 SP1
WINSRV08SP1 Windows Server 2008 SP1

特権レベル

RUNASADMIN管理者としてプログラムを実行

REG ADD “HKLM\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\AppCompatFlags\Layers” /v
“C:\temp\compatmodel\iconsext.exe” /t REG_SZ /d “WINXPSP3 RUNASADMIN”
/f

参考文献:
http://www.verboon.info/2011/03/running-an-application-as-administrator-or-in-compatibility-mode/

転載記事の出典を記入してください: windows – “このプログラムを管理者として実行する”をプログラム的に設定する方法 - コードログ