【问题标题】:External program crashes when started impersonated but works when runas外部程序在启动时崩溃,但在 runas 时工作
【发布时间】:2013-01-14 09:21:08
【问题描述】:

我的 .Net-Windows-Forms-Application 以其他用户身份运行。该程序启动另一个从互操作程序集实例化的 .net-exe。尝试从互操作程序集实例化时,外部程序崩溃。 如果我按 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 和我的开发机器上:没有异常窗口,什么都没有,外部应用程序被执行然后消失(我在其中放了一些消息框进行检查)。

在客户机器上:异常窗口

Unknown error (0xffff...e)
Win32Exception
System
StartWithShellExecuteEx
  at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start()
   at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)

【问题讨论】:

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


    【解决方案1】:

    如果您知道用户名和密码,您可以在进程的启动信息中设置这些属性。如果只有模拟令牌,我认为您使用 CreateProcessAsUser ttp://msdn.microsoft.com/en-us/library/windows/desktop/ms682429%28v=vs.85%29.aspx 的 pinvoke 卡住了

    Process.Start 使用用户名、密码和域重载:http://msdn.microsoft.com/en-us/library/sxf2saat.aspx

    PInvoke CreateProcessAsUser 已经有一个 SO 问题和答案:https://stackoverflow.com/a/671368/884862

    【讨论】:

    • Process.Start 使用用户名、密码和域重载会引发“拒绝访问”异常。
    猜你喜欢
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 2019-06-16
    • 1970-01-01
    • 2016-09-02
    相关资源
    最近更新 更多