2010-12-03 6 views
1

(domain\user) mydomain\myuserというプロセスを実行しているときに、Process.Start()を使用すると、同じ資格情報 - mydomain\myuserを使用してこの新しいプロセスが開始されるという印象を受けました。Process.Start()は同じユーザーの新しいプロセスを生成しません

私の問題は、私のProcess.Start()呼び出しが、起動されたプロセス(私の仕事のために管理者アカウントで実行する必要があります)で権限の問題を引き起こしているSYSTEMアカウントのプロセスを作成しているようです。 。それが変更された場合 - Windowsインストーラ内でからこのプロセス(カスタム組み込みexe)を作成しています

提案がありますか?私はこれに影響を与えるWindowsのグループポリシー(おそらく)について読んだことがありますが、もし私が正直であれば、それは私のところで失われています。

EDIT:少しスニペット:

ProcessStartInfo procInfo = new ProcessStartInfo(exeName, commandLine); 
procInfo.WorkingDirectory = workingDirectory; 
procInfo.UseShellExecute = false; 
procInfo.CreateNoWindow = true; 
Process process = Process.Start(procInfo); 
Process.WaitForExit(); 
return process.ExitCode; 
+0

元のコードが 'System'として実行されていませんか? – CodesInChaos

+0

ええ、100%確実です。私は、これを2つの方法でチェックしました.1つは、生成したsetup exeを使用しています(実行中のユーザーがタスクマネージャを使用していることを確認してください)。また、私たちが生成したMSIを実行することで、コマンドプロンプトからmsiexecを使用し、自分のユーザー名で管理者権限で強制的に実行します。 process.start()exeが開始されると、どちらの場合も 'SYSTEM'によって実行されていることが示されます。 – Dave

答えて

3

procInfo.UseShellExecuteをtrueに設定するか、exeをcmdコマンドのパラメータとしてプロセスとしてcmdを実行します。 UseShellExecuteがfalseに設定されている場合、多くの面白い副作用があります:UseShellExecute

+0

私はCMDのアイデアにショットをつけ、提案に感謝します。 – Dave

+0

私もこの問題に取り組んでいます。私はすでに 'cmd'を呼び出しています。私はexeをパラメータとして呼び出していますが、エラーログを(RedirectStandardErrorを使って)' UseShellExecute'を 'true'に設定することはできません。 – cidthecoatrack

2

あなたの印象が真である:exenamecommandLineは、このメソッド本体用のパラメータである

。 Process.Start()は、ProcessStartInfoに代替の資格情報を指定しないか、資格情報を取得するオーバーロードのいずれかを使用しない限り、常に現在のユーザーの資格情報で新しいプロセスを開始します。

別の問題があります。コードのスニペットを共有してください。

UPDATE

OK!あなたはインストーラについては言及していませんでした。すべてのMSIインストーラは、「Windowsインストーラ」で実行され、確認することができ、SYSTEMで実行されるため、システムで実行されます。

+0

プロセスを開始するために私のメソッドからスニペットを追加しましたが、それは特別なものではありません(そして私はどの資格もパラメータ化していません)。これまでのおかげでありがとう、私はあなたが持っている他の考えを聞くことに興味があるだろう。 – Dave

+0

これはASP.NETでですか? – Aliostad

+0

プロジェクトの一部はWebベースですが、インストーラとexeは通常の.Netコードです。 – Dave

関連する問題