外部程序在开始模拟时崩溃,但在runas时起作用

时间:2013-01-30 14:12:53

标签: c# .net winforms .net-2.0 impersonation

我的.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)

1 个答案:

答案 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