[解決済み] プログラムによるプロセス権限の昇格?
質問
InstallUtil.exe を使用してサービスをインストールしようとしていますが、InstallUtil.exe を介して呼び出されます。
Process.Start
. 以下はそのコードです。
ProcessStartInfo startInfo = new ProcessStartInfo (m_strInstallUtil, strExePath);
System.Diagnostics.Process.Start (startInfo);
ここで
m_strInstallUtil
は "InstallUtil.exe" への完全修飾パスと exe です。
strExePath
は、私のサービスの完全修飾パス/名前です。
昇格したコマンドプロンプトからコマンドライン構文を実行すると動作しますが、私のアプリから(上記のコードを使用して)実行すると動作しません。プロセスの昇格の問題があると思いますが、どのようにプロセスを昇格した状態で実行すればよいのでしょうか?そのためには
ShellExecute
ということでしょうか?
これはすべてWindows Vistaでの話です。VS2008のデバッガで管理者権限に昇格してプロセスを実行しています。
という設定も試してみました。
startInfo.Verb = "runas";
が、問題解決には至らなかったようです。
解決方法は?
次のように startInfo オブジェクトの Verb プロパティを 'runas' に設定することで、新しいプロセスを昇格した権限で開始するように指示できます。
startInfo.Verb = "runas";
これにより、Windowsはエクスプローラから"管理者として実行"メニューコマンドでプロセスを開始したかのように動作します。
この場合、UACプロンプトが表示され、ユーザーが確認する必要があります。これが望ましくない場合(たとえば、長いプロセスの途中で発生するため)、次の方法で、ホストプロセス全体を昇格した権限で実行する必要があります。 アプリケーションマニフェストの作成と埋め込み (UAC) これにより、アプリが起動するとすぐに UAC プロンプトが表示され、すべての子プロセスが追加のプロンプトなしで昇格したアクセス権で実行されます。
Edit: 質問を編集して、"runas"がうまくいかなかったと書かれているのを見ました。それはとても奇妙なことで、そうする必要があります(そして、いくつかのプロダクションアプリケーションで私はそうしています)。マニフェストを埋め込むことによって、親プロセスを昇格した権限で実行するように要求することは、間違いなく機能するはずです。
関連
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み】OnCollisionEnter2Dが実行されない?
-
[解決済み] 2つのリストを結合する
-
[解決済み】Unityでゲームオブジェクトのすべての子をループスルーして破壊する方法?
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない
-
[解決済み】Nullableオブジェクトは値を持たなければならない?
-
[解決済み] Windowsでlocalhostのポートを使用中のプロセスを強制終了するにはどうすればよいですか?
-
[解決済み】WindowsでTCPまたはUDPポートをリッスンしているプロセスを見つけるにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み] [Entity Framework 4.1でエンティティに関連オブジェクトを追加する際に、エンティティオブジェクトをIEntityChangeTracker.の複数のインスタンスから参照できない。
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C# [解決済み] Critical error detected c0000374 - C++ dll returns pointer off allocated memory to C#.
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み】"指定されたパスのフォーマットはサポートされていません。"
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み】インデックスが範囲外でした。コレクションパラメータname:indexのサイズより小さく、非負でなければなりません。
-
[解決済み】IntPtrとは一体何なのか?