的过程.开始异常:"目录名无效"

本文关键字:quot 无效 过程 开始 异常 | 更新日期: 2023-09-27 17:50:41

我有一个Process.Start方法的实现,在我的Windows 7专业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: 

我已经尝试了一些事情:

  1. 我已经确保我分配给进程的用户帐户对可执行文件所在的路径以及%systemroot%位置具有完全的权限。我还确保用户在本地安全策略中具有"身份验证后冒充客户端"的权限。

  2. 我尝试显式地将ProcessStartInfo.WorkingDirectory设置为CommandDirectory。当我这样做时,可执行文件启动但立即崩溃,没有任何解释。

  3. 我通过删除UserNamePasswordDomain属性在我的开发机器上创建了这个函数,以便它使用我的个人凭据。但这对于部署来说是不实际的。这使我觉得问题似乎与凭证和权限有关。

谁能告诉我做错了什么?

的过程.开始异常:"目录名无效"

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

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