.net 以域/用户身份交互执行远程进程

.net 以域/用户身份交互执行远程进程,.net,wmi,.net,Wmi,使用.NET,我需要在我的域内的远程PC上执行一个进程(一个控制台应用程序)。该进程需要以交互方式打开(可以从远程桌面看到),并作为指定的域帐户执行 我的.NET应用程序作为Windows服务运行,其执行帐户在两个框上都有admin。我需要打开进程的用户帐户与服务帐户不同,但在远程客户端(不幸的是,它是Windows Server 2000)上也有管理员帐户。请参见以下内容: 它使用Win32 ScheduledJobWMI类执行可以在远程计算机的交互式桌面上看到的进程。不支持创建将作为特定用户

使用.NET,我需要在我的域内的远程PC上执行一个进程(一个控制台应用程序)。该进程需要以交互方式打开(可以从远程桌面看到),并作为指定的域帐户执行

我的.NET应用程序作为Windows服务运行,其执行帐户在两个框上都有admin。我需要打开进程的用户帐户与服务帐户不同,但在远程客户端(不幸的是,它是Windows Server 2000)上也有管理员帐户。

请参见以下内容:

它使用Win32 ScheduledJobWMI类执行可以在远程计算机的交互式桌面上看到的进程。

不支持创建将作为特定用户运行并显示在特定桌面上的令牌的方法

如果您不需要访问任何网络资源,NtCreateToken可以构造任意令牌。要查找需要与登录SID组合的nonce SID,请窃取该会话的winlogon令牌

如果您可以改为作为系统运行,请窃取winlogon令牌并直接使用它


编辑:由于这是一个控制台应用程序,您可能可以安排打开类似telnet的进程(窃取winlogon令牌),并通过套接字或命名管道将其连接到您的工作人员(无窗口)。

我将继续并尽可能地关闭它;我将尝试更改我的需求,以便我的服务将以执行流程或本地运行服务/脚本所需的相同用户的身份运行

谢谢你的回复,
Zach Skinner

您的服务是否在另一台电脑上运行?如果没有,您将需要查看远程WMI。不,该服务运行在一个独立的服务器上,而不是我希望在其中以交互方式启动进程的服务器上。然后,有关CreateProcessAsUser的所有常规内容都不适用,因为您没有任何代码在那里运行。您需要使用WMI。WMI函数Win32_Process.Create()看起来很有希望,但我无法确定是否可以使用它以交互方式启动进程,以便指定用户在其桌面上看到进程的窗口。感谢链接;这可能就是我要找的。不幸的是,我很难找到查询远程服务器时间的方法,以便尽快安排时间<代码>Win32_LocalTime不适用于Win Server 2000。一旦您测试它,我相信您会发现它只有在目标用户登录的情况下才是交互式的。问题不清楚:登录用户(如果有)是运行进程的用户吗?如果它们是一样的,这就行了。如果不是(正如你所说)它就不会。