Hi,
Win32 API CreateProcessWithLogonW support Starting a Process with specified username.
You can DllImport it in .net code.
[DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=true)]
private static extern bool CreateProcessWithLogonW(String lpszUsername,
String lpszDomain, String lpszPassword, int dwLogonFlags, string
applicationName, StringBuilder commandLine, uint creationFlags,
IntPtr environment, string currentDirectory, ref StartUpInfo sui,
out ProcessInformation processInfo);
And there is existing class doing so:
http://www.codeproject.com/csharp/RunAs.asp
I think this worth a try if your code still fails.