32

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

「アプリケーションの昇格を要求しないでください。」
これはそうです。C'est la vie.

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

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

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

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

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

4

7 に答える 7

39

簡単なレジストリ キーを設定することにより、「管理者としてこのプログラムを実行する」フラグ (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/

于 2010-04-29T17:33:13.217 に答える
6

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

于 2010-04-29T14:17:15.940 に答える
1

が下にあり、以前にファイルなしで実行された.manifest場合、ファイル メソッドは機能しないことがわかりました。Windows は、を初めて実行したときから を記憶しています。これは、ユーザーがインストールが実行されないと文句を言うときに、マニフェストを送信するだけではいけないことを意味します。マニフェスト ファイルは、..exeC:\Program files\....exe.manifest.manifest.exe.exe

Windows は.manifest、変更があるかどうかを再確認し.exeます (たとえば、新しいリリースまたは異なるバイト数)。

于 2013-10-09T06:40:48.243 に答える
1

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

于 2010-02-22T18:53:55.547 に答える
1

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

于 2010-10-03T14:41:11.937 に答える
0

アプリをサイレント モード + 管理者要求モードで WinRar SFX にパックします。

.MSI 変数をいじるよりずっと簡単です。

于 2016-09-06T01:51:13.233 に答える
-1

これが可能だったら、私は驚きます。悪意のあるコードがシステムを悪用するための理想的な方法です。おそらく、管理者がインストールする必要があるか、管理者権限を持っている必要があることをユーザーに伝える必要があります(Windowsの他のすべてのプログラムと同様)。

于 2010-02-22T18:23:05.293 に答える