0

サービスを停止し、ファイルをコピーしてから、サービスを再開するアプリケーションがあります。プログレスバーを表示し、余分なウィンドウを表示したり、画面を変更したりせず、UACに任せてそこから続行するだけです(これは構成プログラムであるため、コピーに盾のアイコンが付いた標準ユーザーとして引き続き使用できますボタン)。

これを行う方法は、管理者として別のアプリケーション (msiexec のように非表示にされた別のアプリケーション) を開くことであり、新しいアプリケーションはその役割を果たし、SendMessage を介して進行状況レポートを送り返します。これは問題なく動作しますが、SendMessage は管理者アプリケーションと非管理者アプリケーションの間で一方向にしか機能しないことがわかりました。StandardInput のリダイレクトは機能しません。これは、ShellExecute をオフにする必要があり、「runas」で ShellExecute をオンにする必要があるためです。

ファイルを使用したくありません。これは、速度が遅く、セキュリティ上のリスクがあるためです (以前は、コマンドを含む CopyData メッセージと一緒にキー コードを送信していました)。StandardInput/Output をリダイレクトする別の方法はありますか? MSIはどのようにそれを行いますか?

これにはC#を使用しています。

4

1 に答える 1

0

サイモンがしたように、私はパイプを提案するつもりでした。

ただし、秘訣の 1 つは、中程度の整合性プロセスがアクセスできるように、より高い整合性のプロセスがパイプを作成し、それに中程度の必須整合性レベルのタグを付ける必要があることです。

于 2012-05-04T03:25:56.613 に答える