2

我正在尝试使用 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 位的,程序也是

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

任何帮助将不胜感激!!

4

2 回答 2

4

文档说“当 UseShellExecute 为假时,您只能使用 Process 组件启动可执行文件”,因此将其传递给您应该预期会失败的 .lnk 文件。

类似的问题:使用 Process.Start C# 通过快捷方式运行应用程序

于 2013-12-18T14:22:25.573 回答
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();
于 2013-12-18T12:03:30.810 回答