使用 WMI 在远程计算机中执行进程

本文关键字:执行 进程 计算机 WMI 使用 | 更新日期: 2023-09-27 18:37:08

我想打开进程pon远程机器,这个远程机器在本地网络内。我尝试此命令,但在远程机器中没有任何反应,我连接的此用户具有管理员权限。两台运行Windows 7的计算机

static void Main(string[] args)
{
    try
    {
        //Assign the name of the process you want to kill on the remote machine
        string processName = "notepad.exe";
        //Assign the user name and password of the account to ConnectionOptions object
        //which have administrative privilege on the remote machine.
        ConnectionOptions connectoptions = new ConnectionOptions();
        connectoptions.Username = @"MyDomain'MyUser";
        connectoptions.Password = "12345678";
        //IP Address of the remote machine
        string ipAddress = "192.168.0.100";
        ManagementScope scope = new ManagementScope(@"''" + ipAddress + @"'root'cimv2", connectoptions);
        //Define the WMI query to be executed on the remote machine
        SelectQuery query = new SelectQuery("select * from Win32_process where name = '" + processName + "'");
        object[] methodArgs = { "notepad.exe", null, null, 0 };
        using (ManagementObjectSearcher searcher = new
                    ManagementObjectSearcher(scope, query))
        {
            foreach (ManagementObject process in searcher.Get())
            {
                //process.InvokeMethod("Terminate", null);
                process.InvokeMethod("Create", methodArgs);
            }
        }
        Console.ReadLine();
    }
    catch (Exception ex)
    {
        //Log exception in exception log.
        //Logger.WriteEntry(ex.StackTrace);
        Console.WriteLine(ex.StackTrace);
    }
}

使用 WMI 在远程计算机中执行进程

您不是使用该代码打开进程,而是枚举名为"iexplore.exe"的所有正在运行的进程并关闭它们。

我认为更简单,更好的方法是使用SysInternals PsExec或Task Scheduler API

如果要使用 WMI,代码应如下所示:

object theProcessToRun = { "YourFileHere" };
ManagementClass theClass = new ManagementClass(@"''server'root'cimv2:Win32_Process");
theClass.InvokeMethod("Create", theProcessToRun);

----------回复您的评论------------------

首先,您需要改变对编码的态度和方法,并阅读您正在复制/粘贴的代码。

然后你应该学习更多关于编程语言的知识。

不,我不会为你写代码。我给了你一个提示,指出正确的方向。现在轮到你开发它了。玩得愉快!!

这是我之前使用 vbs 脚本为我的公司做的脚本。 可以搜索网络以将其转换为C#等。 步骤的基本内容以及如何使用 WMI 启动服务。有一个很好的编码,玩得开心。

sUser = "TESTDomain'T-CL-S"
sPass = "Temp1234"  
Set ServiceSet = GetObject("winmgmts:").ExecQuery("Select * from Win32_Service where Name = 'netlogon'")
For Each Service In ServiceSet
   Service.StopService
   Service.Change "netlogon",Service.PathName, , ,"Automatic",false,sUser,sPass
   Service.StartService
Next
Set Service = Nothing
Set ServiceSet = Nothing