Windows 在没有任何第三方软件的远程计算机上启动程序

Windows 在没有任何第三方软件的远程计算机上启动程序,windows,networking,process,wmi,Windows,Networking,Process,Wmi,我正试图找到一种方法,在远程计算机上启动一个程序(在域环境中,所以我知道所有凭据),而不使用任何第三方软件,如PSExec 现在的问题是,它应该以交互方式运行!(在最好的情况下,它应该在当前登录的用户上下文中运行)我知道WMI,我知道可以使用WMI启动进程,但它不是交互式的。(您可以使用计划任务启动交互式进程,但随后它将作为系统进程运行并具有系统权限(?) 现在让我们假设我想为IT技术人员编写一个C#应用程序来监控系统,你知道哪种技术可以让IT技术人员在不安装软件的情况下远程启动程序吗 或者,换

我正试图找到一种方法,在远程计算机上启动一个程序(在域环境中,所以我知道所有凭据),而不使用任何第三方软件,如PSExec

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

现在让我们假设我想为IT技术人员编写一个C#应用程序来监控系统,你知道哪种技术可以让IT技术人员在不安装软件的情况下远程启动程序吗


或者,换句话说,除了WMI计划的进程之外,还有其他的东西吗?

如果这是一个解决方案,您可以像PSExec那样为自己编程。如果我清楚地记得PSExec是如何工作的,那么它首先会使用管理员共享复制文件以在远程系统上运行(例如,\\PCNAME\admin$\TEMP;如果需要,您可以使用
wnetadconnection2()
函数使用正确的凭据连接到远程计算机)。如果您在远程计算机上复制的文件可以作为系统服务运行(如果您编写了系统服务,则可能是这样),则可以使用
OpenSCManager()
CreateService()
StartService()
启动它。服务可以在交互模式下运行(请参阅
SERVICE\u interactive\u进程
标志,该标志要求服务作为系统帐户运行)。然后,该服务可以模拟登录的用户,也许可以使用
ImpersonateLoggedOnUser()
,使用从他运行的进程之一使用
OpenProcessToken()
获得的令牌,但我从未尝试过看这是否有效。

如果这是一个解决方案,您可以自己编程PSExec所做的事情。如果我清楚地记得PSExec是如何工作的,那么它首先会使用管理员共享复制文件以在远程系统上运行(例如,\\PCNAME\admin$\TEMP;如果需要,您可以使用
wnetadconnection2()
函数使用正确的凭据连接到远程计算机)。如果您在远程计算机上复制的文件可以作为系统服务运行(如果您编写了系统服务,则可能是这样),则可以使用
OpenSCManager()
CreateService()
StartService()
启动它。服务可以在交互模式下运行(请参阅
SERVICE\u interactive\u进程
标志,该标志要求服务作为系统帐户运行)。然后,该服务可以模拟登录的用户,也许可以使用
ImpersonateLoggedOnUser()
,使用从他运行的进程之一使用
OpenProcessToken()
获得的令牌,但我从未尝试过这是否有效。

非常感谢您的输入:),您真的认为PSExec会将文件复制到远程主机吗?是的,如果指定-c选项(请参阅psexec的帮助文本),它会将文件复制到远程主机。如果不是,“应用程序必须位于远程系统上的系统路径中。”。非常感谢您的输入:)并且您真的认为PSExec会将文件复制到远程主机?是的,如果您指定-c选项(请参阅PSExec的帮助文本),它会将文件复制到远程主机。否则,“应用程序必须位于远程系统的系统路径中。”。