2016-12-28 6 views
2

私は、NTプロセスの権限として\ systemを実行しているGUIプロセスを持っています。 GUIプロセスと対話しているユーザーとして別のプロセス(好ましくはProcessを介して)を起動したいと思います。私がちょうどProcess.Startを呼び出すと、新しいプロセスはnt authority \ systemとしても実行されますが、domain \ userにします。UIと対話するユーザーとして新しいプロセスを実行

編集:説明のために、私は現在のユーザーのユーザー名またはパスワードを持っていません。私はちょうどユーザーがユーザー名/パスワードを尋ねることなく自分で起動していたかのようにプロセスを実行したい。

答えて

1

有効な資格情報でStartInfoプロパティを使用します。あなたがこれを行うことができます

Process proc = new Process(); 

proc.StartInfo.Domain = "YourDomain"; 
proc.StartInfo.UserName = "Username"; 
proc.StartInfo.Password = "YourPassword"; 
1

Process proc = new System.Diagnostics.Process(); 
System.Security.SecureString ssPwd = new System.Security.SecureString(); 
proc.StartInfo.UseShellExecute = false; 
proc.StartInfo.FileName = "C:/YourPath/YourProcess.exe"; 
proc.StartInfo.Arguments = "Args"; //Arguments if any, otherwise delete this line 
proc.StartInfo.Domain = "domainname"; 
proc.StartInfo.UserName = "username"; 
proc.StartInfo.Password = "password"; 
proc.Start(); 
1
var psi = new ProcessStartInfo(); 
psi.Verb = "runas"; 
psi.FileName = "notepad.exe"; 
Process.Start(psi); 
0

Processオブジェクトを使用してプロセスを起動している間、引数 'として実行' を、ユーザーのパスワードを要求します。

ローカルシステムアカウントからプロセスをユーザーアカウントとして実行することはできません。

はあなたの問題

  1. スタートメイン処理を解決するための回避策を行うことができます「」のログオンユーザーとして。

  2. ここで、メインプロセス(A)から必要なローカルシステムアカウント 'B'プロセスを開始します。

  3. メインコード(ユーザーアカウントで実行する必要があるコード)を実行する必要がある場合、 'A'はプロセスBからのトリガーを監視します。トリガーがヒットした場合、必要なコードを実行することができます。

監視(読み取り)すべての特定の期間のためのテキストファイルを監視することによって行うことができ、トリガは、テキストファイルに書き込んでいるB(システムアカウントのプロセス)から送信することができます。他のどんなより良いモニタリング手法も取ることができる。