在没有第三方软件的情况下在远程计算机上启动程序

我试图find一个方法来启动远程计算机上的程序(在域环境中,所以我知道所有的凭据),没有任何第三方软件,如PSExec。

现在的问题是,它应该交互式运行! (在最好的情况下,它应该在当前login的用户上下文中运行)我知道WMI,我知道你可以用WMI启动一个进程,但它不是交互式的。 (您可以使用计划任务启动一个交互式进程,但作为系统进程运行并具有系统特权(?))

现在让我们说我想为IT技术人员编写一个C#应用程序来监督系统,您是否知道哪种技术可以用来让IT技术人员远程启动程序,而无需安装软件?

或者换句话说,除了WMI预定的stream程之外,还有别的东西吗?

如果这是您的解决方案,您可以编程自己PSExec的功能。 如果我记得PSExec是如何工作的,它首先复制文件,使用管理共享在远程系统上运行(例如,\\ PCNAME \ ADMIN $ \ TEMP;如有必要,可以通过右键连接到远程计算机凭证使用WNetAddConnection2()函数)。 如果您在远程机器上复制的文件可以作为系统服务运行(可以是这种情况,如果您编写的话),可以使用OpenSCManager()CreateService()StartService()启动它。 服务可以在交互模式下运行(请参阅SERVICE_INTERACTIVE_PROCESS标志,该标志要求服务作为系统帐户运行)。 该服务可以模拟登录的用户,也许通过使用ImpersonateLoggedOnUser()使用从OpenProcessToken()一个正在运行的进程获得的令牌,但我从来没有试图看到这是否工作。