Process.Start异常:“目录名称无效”

时间:2014-03-17 14:12:51

标签: c# process win32exception

我在Windows 7专业版64位开发计算机上运行的Process.Start方法实现时,在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属性,以便它使用我的个人凭据。但这对于部署来说并不实用。这使我觉得问题与凭据和权限有关。

  4. 有人可以告诉我做错了吗?

1 个答案:

答案 0 :(得分:0)

@Julien Lebosquain的评论让我得出了答案。我需要在本地登录一次,因为我想冒充用户。这创建了默认用户文件夹。

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