C++ 如何在C++;窗下
我正在Windows下使用Dev-C++。我的问题是如何在远程机器上启动进程?我知道PsExec可以做到这一点,但如果可能的话,我想避免使用它。 如果有人能给出一些示例代码,我将不胜感激:) 提前谢谢C++ 如何在C++;窗下,c++,windows,C++,Windows,我正在Windows下使用Dev-C++。我的问题是如何在远程机器上启动进程?我知道PsExec可以做到这一点,但如果可能的话,我想避免使用它。 如果有人能给出一些示例代码,我将不胜感激:) 提前谢谢 kampi如果这很容易,黑客就会在所有暴露于互联网的机器上启动恶意软件 PSExec通过LAN使用服务控制管理器从“此处”,即运行服务的机器启动服务EXE。它需要很多安全特权,例如管理员权限 如果不想这样做,可以查看SSH(有开源示例)或远程命令提示符(在Windows资源工具包中) 如果这很容易
kampi如果这很容易,黑客就会在所有暴露于互联网的机器上启动恶意软件 PSExec通过LAN使用服务控制管理器从“此处”,即运行服务的机器启动服务EXE。它需要很多安全特权,例如管理员权限
如果不想这样做,可以查看SSH(有开源示例)或远程命令提示符(在Windows资源工具包中) 如果这很容易,黑客就会在所有接触互联网的机器上启动恶意软件 PSExec通过LAN使用服务控制管理器从“此处”,即运行服务的机器启动服务EXE。它需要很多安全特权,例如管理员权限
如果不想这样做,可以查看SSH(有开源示例)或远程命令提示符(在Windows资源工具包中) 如果您已经在远程机器上运行了一个服务,您可以请求运行一个程序,这将是最好的。Windows本身不提供任何现成的有用信息;它附带了一个远程shell服务(通常是停用的,甚至没有安装) IIUC,psexec所做的是:
如果您不想使用psexec,您仍然可以这样做。请注意,这样做需要相当多的特权。如果您已经在远程计算机上运行了一个服务,您可以请求运行一个程序,这将是最好的。Windows本身不提供任何现成的有用信息;它附带了一个远程shell服务(通常是停用的,甚至没有安装) IIUC,psexec所做的是:
如果您不想使用psexec,您仍然可以这样做。请注意,这样做需要相当多的特权。简单的答案是你不能。您所能做的就是向远程计算机发送一条消息,要求它为您启动该过程。PsExec在远程计算机上运行,侦听特定消息并启动进程以响应这些消息
您可以使用现有的协议,如PsExec,也可以创建自己的协议。创建自己的服务需要您可以在远程计算机上安装服务。如果远程机器不在您的控制之下,则这是不可能的。如果您确实设计了自己的系统,那么在设计协议时必须小心,因为您不想无意中在系统中打开一个安全漏洞。简单的答案是您不能。您所能做的就是向远程计算机发送一条消息,要求它为您启动该过程。PsExec在远程计算机上运行,侦听特定消息并启动进程以响应这些消息 您可以使用现有的协议,如PsExec,也可以创建自己的协议。创建自己的服务需要您可以在远程计算机上安装服务。如果远程机器不在您的控制之下,则这是不可能的。如果您确实设计了自己的系统,则在设计协议时必须小心,因为您不希望无意中在系统中打开安全漏洞。您可以使用WMI。。。(C#示例,因此您必须找到等效的C++) 你可以使用WMI。。。(C#示例,因此您必须找到等效的C++)
如果我知道的没错,那么在Java中,在远程计算机上创建一个进程可能会容易得多。这就是为什么我问,如果可能在C++中。顺便说一下,目标计算机是域成员,我是所有计算机的管理员,如果我不是,我会指定一个用户。如果你是uber管理员,你可以使用以下技术:1)使用MoveFileEx()API将要运行的东西复制到\\targetmachine\C$\Someplace;2)使用OpenSCManager(“\\targetmachine”,…)连接到服务控制管理器的API 3)使用ServiceControl()API将EXE作为服务“运行”。它不是服务,但在SCM意识到这一点之前,您的EXE将运行。您可以给我一个如何使用ServiceControl()的示例吗?我找不到任何地方可以用来:如果我知道正确的话,那么在java上,在远程计算机上创建一个进程就变得容易得多。这就是我问的原因,如果C++中是可能的。顺便说一下,目标机器是域成员,我管理所有的计算机,或者如果我不是,我会指定一个用户。如果你是Uber管理员,你可以使用下面的T。技术:1)使用MoveFileEx()API将要运行的内容复制到\\targetmachine\C$\Someplace 2)使用OpenSCManager(“\\targetmachine”,…)API连接到服务控制管理器3)使用ServiceControl()API将EXE作为服务“运行”。它不是服务,但在SCM意识到这一点之前,您的EXE将运行。您可以给我一个如何使用ServiceControl()的示例吗?我找不到任何地方可以用的例子:(这有点太多了:)那么,你能给我举个例子吗,怎么做?我不是专业的程序员,C++只是我的业余爱好。不幸的是,我不知道应该使用哪种API-s。你能再帮我一点忙吗?提前谢谢!这有点太多了:)那么,你能给我举个例子吗,怎么做?我不是一个专业的程序
ConnectionOptions connectOptions = new ConnectionOptions();
connectOptions.Username = "Administrator";
connectOptions.Password = "TopSecret";
ManagementScope scope = new ManagementScope(
@"\\" + machine + @"\root\cimv2",
connectOptions);
scope.Connect();
ManagementPath path = new ManagementPath(@"Win32_Process");
ManagementClass proc = new ManagementClass(scope, path, new ObjectGetOptions());
ManagementBaseObject args = proc.GetMethodParameters("Create");
args["CommandLine"] = "C:\\Windows\\notepad.exe";
proc.InvokeMethod("Create", args, null);