C# 进程启动异常:“启动异常”;目录名无效";
我有一个C# 进程启动异常:“启动异常”;目录名无效";,c#,process,win32exception,C#,Process,Win32exception,我有一个进程.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}MyExecutabl
进程.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();
Atprocess.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
。当我这样做时,可执行文件启动,但立即崩溃,没有解释
我在我的开发机器上通过删除用户名
、密码
和域
属性来实现此功能,以便它使用我的个人凭据。但这对于部署来说并不实际。这使我觉得问题似乎与凭据和权限有关
有人能告诉我我做错了什么吗?@Julien Lebosquain的评论让我找到了答案。我需要以我想要模拟的用户身份在本地登录一次。这将创建默认用户文件夹
我调用的可执行文件可能需要写入AppData或用户目录的另一个子文件夹。显示Windows7
。谢谢。我编辑了这个问题以指定它是64位的。您是否尝试过使用const string CommandDirectory=Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFilesX86)
@PaulyGlott:您需要将目录名用单引号括起来,因为其中包含空格。模拟用户在计算机上有主目录吗?