Question

I'm trying to use Process.Start() to start a lnk file. it's fine when credentials are not provided, but throws an exception when I do. here's the sample code:

This works fine

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

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

But this code throws a Win32Exception: 'The specified executable is not a valid application for this OS platform'.

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();
}

My OS is 32bit and the program is too

I'll need those credentials as the file is on a network drive.

Any help will be greatly appreciated!!

Was it helpful?

Solution

The docs say "When UseShellExecute is false, you can start only executables with the Process component", so passing it a .lnk file you should expect to fail.

Similar problem here: Run application via shortcut using Process.Start C#

OTHER TIPS

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();
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top