【发布时间】:2014-03-17 14:12:51
【问题描述】:
我有一个 Process.Start 方法的实现在我的 Windows 7 Professional 64 位开发机器上失败,同时在我们的 Windows 2008 测试环境中工作。
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属性在我的开发机器上创建了此功能,以便它使用我的个人凭据。但这对于部署是不切实际的。这让我觉得问题与凭据和权限有关。
谁能告诉我我做错了什么?
【问题讨论】:
-
显示
Windows 7的位数。 -
谢谢。我编辑了问题以指定它是 64 位的。
-
你试过用
const string CommandDirectory = Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFilesX86) -
被模拟的用户在机器上是否有主目录?
-
有趣。模拟用户在开发机器上没有主目录。它在测试服务器上。
标签: c# process win32exception