我的.Net-Windows-Forms-Application正在以另一个用户身份运行。该程序启动另一个.net-exe,它从一个interop-assembly实例化。尝试从互操作程序集进行实例化时,外部程序崩溃。 如果我按Shift-RightClick-RunAsOtherUser启动外部exe并输入与模拟相同的登录数据,程序运行正常。
也许它有......与我的流程启动电话有关:
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = Path.Combine(System.Windows.Forms.Application.StartupPath, exeFile);
startInfo.Arguments = arguments;
Process process = Process.Start(startInfo);
process.WaitForExit();
[编辑]
崩溃详情 在vmWare和我的开发机器上:没有异常窗口,没有任何东西,外部应用程序被执行然后消失(我在其中放了一些消息框来检查)。
在客户机器上:异常窗口 未知错误(0xffff ... e) Win32Exception 系统 StartWithShellExecuteEx 在System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) 在System.Diagnostics.Process.Start() 在System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
答案 0 :(得分:0)
如果您知道用户名和密码,则可以在流程的启动信息中设置这些属性。如果只有一个模拟令牌,我认为你使用了CreateProcessAsUser的pinvoke ttp://msdn.microsoft.com/en-us/library/windows/desktop/ms682429%28v=vs.85%29.aspx
使用用户名,密码和域进行Process.Start重载:http://msdn.microsoft.com/en-us/library/sxf2saat.aspx
PInvoke CreateProcessAsUser已经有了SO问题和答案:https://stackoverflow.com/a/671368/884862