質問

説明されているように、アプリケーションマニフェストファイルを使用しました ここ 私のアプリケーションの一部を、高度な特権で実行していること(必要です)。
そのため、必要に応じて、メインプログラムはProcess.startを使用して小さなアセンブリを呼び出します。

しかし、Windows XPで同じことをするにはどうすればよいですか?
XPはこのマニフェストを無視し、現在のユーザーコンテキストで小さなアセンブリを実行しているようです。

役に立ちましたか?

解決

次のコードから ここ 私が必要なことだけをします:

ProcessStartInfo processStartInfo = new ProcessStartInfo("path", "args");
processStartInfo.Verb = "runas";

using (Process process = new Process())
{
   process.StartInfo = processStartInfo;
   process.Start();
   process.WaitForExit();
}

したがって、実際には、processstartinfo.verbに「ranas」を設定する必要があります。添付されたマニフェストにより、このコードはWindows XP、Vista、7で正常に動作するようになりました。

アップデート:
参照してください 同様の質問に対するこの答え. 。これは基本的に同じコードであり、引数も使用しています。

他のヒント

使用できます runas 指図。

Windows XPにはUACがありません。

あなたは電話する必要があります Process.Start 管理者の特権を持つユーザーのログイン資格情報を使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top