Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 进程启动异常:“启动异常”;目录名无效";_C#_Process_Win32exception - Fatal编程技术网

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();
At
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
    。当我这样做时,可执行文件启动,但立即崩溃,没有解释

  • 我在我的开发机器上通过删除
    用户名
    密码
    属性来实现此功能,以便它使用我的个人凭据。但这对于部署来说并不实际。这使我觉得问题似乎与凭据和权限有关


  • 有人能告诉我我做错了什么吗?

    @Julien Lebosquain的评论让我找到了答案。我需要以我想要模拟的用户身份在本地登录一次。这将创建默认用户文件夹


    我调用的可执行文件可能需要写入AppData或用户目录的另一个子文件夹。

    显示
    Windows7
    。谢谢。我编辑了这个问题以指定它是64位的。您是否尝试过使用
    const string CommandDirectory=Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFilesX86)
    @PaulyGlott:您需要将目录名用单引号括起来,因为其中包含空格。模拟用户在计算机上有主目录吗?