给出凭据时,process.start()抛出win32Exception

时间:2013-12-18 11:55:31

标签: c# process credentials win32exception

我正在尝试使用Process.Start()来启动lnk文件。没有提供凭据时很好,但是当我这样做时会抛出异常。这是示例代码:

这很好用

var processStartInfo = new ProcessStartInfo
{
    FileName = @"F:\abc.lnk",
};

using (var process = new Process())
{
    process.StartInfo = processStartInfo;
    process.Start();
}

但是这段代码抛出了一个Win32Exception:'指定的可执行文件不是这个OS平台的有效应用程序'。

var processStartInfo = new ProcessStartInfo
{
    FileName = @"F:\abc.lnk",
    UserName = userName,
    Password = securePassword,
    Domain = domain,
    UseShellExecute = false,
};

using (var process = new Process())
{
    process.StartInfo = processStartInfo;
    process.Start();
}

我的操作系统是32位,程序也是

我需要这些凭据,因为该文件位于网络驱动器上。

任何帮助将不胜感激!!

2 个答案:

答案 0 :(得分:4)

docs说“当UseShellExecute为false时,你只能使用Process组件启动可执行文件”,因此传递一个你应该会失败的.lnk文件。

此处类似问题:Run application via shortcut using Process.Start C#

答案 1 :(得分:0)

Process process = new Process();
process.StartInfo.FileName = "F:\abc.lnk";
process.StartInfo.Arguments = "use \\\\computerName\\share password /user:UserName";
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.StartInfo.UseShellExecute = false;
process.Start();
process.WaitForExit();
process.Dispose();