8

.NET アプリケーションから EXE を起動する必要があるシナリオがありますが、ポップアップする UAC プロンプトを回避できません。プロンプトは、他の EXE が起動される前でもトリガーされます。おそらくProcess.Start.

アプリを起動するには、次のコードを使用します。

            var info = new ProcessStartInfo(path, "params");
            info.Verb = "runas";
            try
            {
                Process.Start(info);
            }
            catch (System.ComponentModel.Win32Exception)
            {
                // Person denied UAC escallation
                return false;
            }

両方の EXE (私のアプリと他の EXE) には、マニフェストでこれが定義されています。

    <requestedExecutionLevel level="asInvoker" uiAccess="false" />

UACプロンプトをトリガーせずに他のEXEを実行し、呼び出し元のアプリケーションと同じアクセストークンを持たせるにはどうすればよいですか(アプリフォルダー内のファイルに変更を加えることができます)?

4

1 に答える 1

8

2 番目の EXE の起動時に UAC プロンプトが表示されないようにするには:

1)使用しないでくださいVerb = "runas"-毎回UACが発生します

2) EXE にセットアップのようなファイル名を使用しないでください。MSDNのルールは次のとおりです。

32 ビット プロセスが作成される前に、次の属性がチェックされて、それがインストーラーであるかどうかが判断されます。

ファイル名には、「インストール」、「セットアップ」、「更新」などのキーワードが含まれます。

次のバージョニング リソース フィールドのキーワード: ベンダー、会社名、製品名、ファイル

説明、元のファイル名、内部名、およびエクスポート名。

実行可能ファイルに埋め込まれた side-by-side マニフェストのキーワード。

実行可能ファイルにリンクされている特定の StringTable エントリのキーワード。

実行可能ファイルにリンクされた RC データの主要な属性。

実行可能ファイル内の対象となるバイト シーケンス。

于 2011-05-29T01:23:56.673 に答える