web-dev-qa-db-ja.com

「管理者としてこのプログラムを実行する」をプログラムで設定する方法

Vistaでol 'bdeadmin.exeに問題があります。まず、予測可能な応答を邪魔にならないようにしましょう。

「アプリケーションを昇格させる必要はありません。」
これはそうです。 C'est la vie。

「マニフェストファイルを埋め込む必要があります。」

「BDEは廃止されました。dbExpressを使用する必要があります」
150万行のコード。 '言っ途切れる。

「EXEの横にあるマニフェストファイルをドロップします。」
それを試みましたが、何もしませんでした。テストとして、その同じマニフェストファイルでは、他のいくつかのEXEファイルを作成することができました。そこにある何かが外部マニフェストの読み取りを妨げています。

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

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

29
Patrick

単純なレジストリキーを設定することにより、「管理者としてこのプログラムを実行する」フラグ(EXEのプロパティの[互換性]タブにあるオプション)をプログラムで設定できます。これらのキーのいずれかの下に文字列値(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 Windows 95
WIN98 Windows 98
WIN4SP5 Windows NT 4.0 SP5
WIN2000 Windows 2000
WINXPSP2 Windows XP SP2
WINXPSP3 Windows XP SP3
VISTARTM Vista
VISTASP1 Vista SP1
VISTASP2 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/

38
Allon Guralnek

これはロングショットですが、EXEの名前に「セットアップ」または「インストール」という単語がある場合、Windowsは実行時に昇格を要求します。ただし、コントロールパネルアプレットで機能するかどうかはわかりません。

6
Allon Guralnek

Microsoftの Application Compatibility Toolkit を試しましたか?アプリを分析し、問題の解決に役立つ可能性のある互換性シムを提供します。

1
Aaron Klotz

.manifest.exeの下にあり、C:\Program files\...が以前に.exeファイルなしで実行されている場合、.manifestファイルメソッドは機能しないことがわかりました。 Windowsは、.manifestが初めて実行されたときの.exeを記憶しています。これは、インストールが実行されないとユーザーが苦情を言ったときに、マニフェストを送信することはできないことを意味します。マニフェストファイルは、.exeを配置する同じインストールの前またはインストール中に配置する必要があります。

Windowsは、.manifestが変更された場合(新しいリリースや異なるバイト数など).exeを再チェックします

1
user2861544

「runas」を「動詞」として使用するShellExcuteを使用するラッププログラムを使用して、必要なプログラムを実行します。

1
Barrypp.zzx

アプリをサイレントモード+管理リクエストモードのWinRar SFXにパックします。

.MSI変数をいじるよりもはるかに簡単です。

0
Benji