Vistaでol 'bdeadmin.exeに問題があります。まず、予測可能な応答を邪魔にならないようにしましょう。
「アプリケーションを昇格させる必要はありません。」
これはそうです。 C'est la vie。
「マニフェストファイルを埋め込む必要があります。」
。
「BDEは廃止されました。dbExpressを使用する必要があります」
150万行のコード。 '言っ途切れる。
「EXEの横にあるマニフェストファイルをドロップします。」
それを試みましたが、何もしませんでした。テストとして、その同じマニフェストファイルでは、他のいくつかのEXEファイルを作成することができました。そこにある何かが外部マニフェストの読み取りを妨げています。
「ショートカットを作成し、SLDF_RUNAS_USERを設定します。」
それはできません。コントロールパネルアプレットです。
唯一機能したのは、[プロパティ]ウィンドウの[互換性]タブで[管理者としてこのプログラムを実行する]を設定することだけでした。ユーザーにこれを指示する必要はありません。ビジネスに悪い。インストーラーにこれをさせる必要があります。 MSMファイルは静的パスを使用します。
単純なレジストリキーを設定することにより、「管理者としてこのプログラムを実行する」フラグ(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/
これはロングショットですが、EXEの名前に「セットアップ」または「インストール」という単語がある場合、Windowsは実行時に昇格を要求します。ただし、コントロールパネルアプレットで機能するかどうかはわかりません。
Microsoftの Application Compatibility Toolkit を試しましたか?アプリを分析し、問題の解決に役立つ可能性のある互換性シムを提供します。
.manifest
が.exe
の下にあり、C:\Program files\...
が以前に.exe
ファイルなしで実行されている場合、.manifest
ファイルメソッドは機能しないことがわかりました。 Windowsは、.manifest
が初めて実行されたときの.exe
を記憶しています。これは、インストールが実行されないとユーザーが苦情を言ったときに、マニフェストを送信することはできないことを意味します。マニフェストファイルは、.exe
を配置する同じインストールの前またはインストール中に配置する必要があります。
Windowsは、.manifest
が変更された場合(新しいリリースや異なるバイト数など).exe
を再チェックします
「runas」を「動詞」として使用するShellExcuteを使用するラッププログラムを使用して、必要なプログラムを実行します。
アプリをサイレントモード+管理リクエストモードのWinRar SFXにパックします。
.MSI変数をいじるよりもはるかに簡単です。