Process.Start
Windows 2008 テスト環境で作業しているときに、Windows 7 Professional 64 ビット開発マシンで失敗するメソッドの実装があります。
const string CommandDirectory = @"C:\Program Files (x86)\Command";
var process = new Process
{
StartInfo =
{
FileName = string.Format("{1}{0}MyExecutable.exe", Path.DirectorySeparatorChar, CommandDirectory),
RedirectStandardError = true,
RedirectStandardOutput = true,
UseShellExecute = false,
UserName = userName,
Password = securePassword,
Domain = "MYDOMAIN",
},
};
process.Start();
でprocess.Start();
、開発マシンで次の例外が発生します。
System.ComponentModel.Win32Exception occurred
HResult=-2147467259
Message=The directory name is invalid
Source=System
ErrorCode=-2147467259
NativeErrorCode=267
StackTrace:
at System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
InnerException:
私はいくつかのことを試しました:
プロセスに割り当てたユーザー アカウントが、実行可能ファイルがあるパスと %systemroot% の場所に対する完全な権限を持っていることを確認しました。また、ユーザーがローカル セキュリティ ポリシーで「認証後にクライアントを偽装する」権限を持っていることを確認しました。
を明示的に に設定しようと
ProcessStartInfo.WorkingDirectory
しましたCommandDirectory
。これを行うと、実行可能ファイルが起動しますが、説明なしですぐにクラッシュします。個人の資格情報を使用するように、、、およびプロパティを
UserName
削除Password
して、開発マシンでこの関数を作成しました。Domain
しかし、これは展開には実用的ではありません。これにより、問題が資格情報と権限に関連しているように思えます。
誰が私が間違っているのかアドバイスできますか?