wmi远程启动exe程序

Posted hu16683845

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wmi远程启动exe程序相关的知识,希望对你有一定的参考价值。

版权声明:join share https://blog.csdn.net/qq_16072507/article/details/54603954

 
                                   一、vbs:WMI远程控制机器时报0x80070005拒绝访问错误的解决方法
昨天晚上学习一个WMI远程连接机器的方法,可是始终报错,错误代码为0x80070005;拒绝访问,今天上午看到别人的博客里写到远程连接机器不成功的方法,试了一下果然OK了,以免以后忘掉,所以记在这里;
wmic /node:[机器IP] /user:[管理员账户名] /password:[密码]  process where (name=‘qq.exe‘) call terminate输入后报错,错误代码为:0x80070005
解决方法:
1.开始---运行DCOMCNFG在"组件服务"对话框中,依次展开"组件服务","计算机""我的电脑",在"我的电脑"右键属性对话框中单击"COM安全"选项卡,在"启动和激活权限"下,单击"编辑限制",在"启动权限"对话框中,将你要访问的用户或组添加到"组或用户名称"列表中。在"启动权限"对话框中,在"组或用户名称"框架内选择您的用户和组。在"用户权限"下的"允许"栏中,选择"远程启动",然后单击“确定”
2.开始---运行,到达dos命令行状态,输入netsh firewall set Service RemoteAdmin enable(disable为不可用)
输入完以后会提示“确定”代表执行动作生效
3.打开“控制面板”---“管理工具”,点击“本地安全策略”,选择“本地策略”---“安全选项”,选择中间的“网络访问:本地账户的共享和安全模式”把它的值设为“经典--本地用户以自己的身份验证”,然后再回到dos命令行下,输入以下命令:
wmic /node:[机器IP] /user:[管理员账户名] /password:[密码]  process where (name=‘qq.exe‘) call terminate
以上这句话可以把远程控制的机器上的qq进行关闭
其中name=‘qq.exe‘也可以写成别的进程名,看自己有什么样的需求; 如:name=‘winword‘等等
 
二、0x80070003 无权限

问题 9:如何设置 WMI 命名空间的安全性?

使用 WMI 控件设置命名空间的安全性

WMI 控件提供了一种管理命名空间安全性的方法。可以在命令提示行运行以下命令来启动 WMI 控件:

wmimgmt

在安装了 WMI 的 Windows 9x 或 Windows NT4 计算机上,输入以下命令:

wbemcntl.exe

或者您也可以通过以下方式访问 WMI Control 和“安全性”选项卡:

1. 右键单击“我的电脑”,然后单击 管理。

2.双击 服务和应用程序 ,然后双击 WMI 控件。

3. 右键单击 WMI 控件 ,然后单击 属性。

4. 在 WMI 控件属性 对话框中单击 安全 选项卡。

5. 一个名为 Root ,前面带加号 (+) 的文件夹将会出现。如果必要,展开这个树状结构,定位到想要设置权限的命名空间。

6. 单击 安全设置 按钮。一组用户和权限显示出来。如果用户在这个列表中,请按照需要修改权限。如果用户不再这个列表中,请单击 添加 按钮,然后从账户所在的位置(本地计算机、域等等)添加用户。

注意:

? 为了查看和设置 namespace 安全性,用户必需拥有 读取安全设置 和 编辑安全设置 权限。系统管理员默认具备这些权限,并可以按照需要将权限赋予其他用户。

? 如果一个用户需要远程访问命名空间,必须为其选中 远程启用 权限。

? 默认情况下,针对一个命名空间设置的用户权限只对该命名空间有效。如果希望用户可以访问该命名空间和其下所有子命名空间,或者只能访问子命名空间,请单击 高级 按钮。单击 编辑 并在出现的对话框中指定允许访问的范围。
 
三、创建任务:
     打开“控制面板”---“管理工具”,任务计划程序    创建基本任务,触发为一次性任务,操作为启动程序
 
四、写代码前,需要在解决方案下的工程中References右键添加引用System.Management,System.Management.Instrumentation
 public static void StartGame() {
            Console.WriteLine("remote start game");
            //StartRemoteExe("192.168.1.3","UPC","imr360","xfs");
            StartRemoteExe2("192.168.1.3", "UPC", "imr360", "xfs");
            //ShowWinInfo();
        }
private static void StartRemoteExe2(string ip, string username, string password, string taskname)
        {
            ManagementClass classInstance = new ManagementClass();
            ManagementBaseObject inParams = classInstance.GetMethodParameters("Create");
            inParams["CommandLine"] = "schtasks /run /s "" + ip + "" /u "" + username + "" /p "" + password+"" /tn "" + taskname + """;
            classInstance.InvokeMethod("Create",inParams,new InvokeMethodOptions(null, System.TimeSpan.MaxValue))
        }
        private static void StartRemoteExe(string ip, string username, string password, string taskname) {
            ConnectionOptions connOption = new ConnectionOptions();
            connOption.Username = username;
            connOption.Password = password;
            ManagementPath mngPath = new ManagementPath(@"\" + ip + @" ootcimv2:Win32_Process");
            ManagementScope scope = new ManagementScope(mngPath, connOption);
            scope.Connect();
            ManagementClass classInstance = new ManagementClass(scope, mngPath, new ObjectGetOptions());
            ManagementBaseObject inParams = classInstance.GetMethodParameters("Create");
            inParams["CommandLine"] = "schtasks /run /tn ""+taskname+""";
            ManagementBaseObject outParams = classInstance.InvokeMethod("Create", inParams, new InvokeMethodOptions(null, System.TimeSpan.MaxValue));
            Console.WriteLine("Creation of calculator process returned: " + outParams["returnValue"]);
            Console.WriteLine("Process ID: " + outParams["processId"]);
        }
        /// <summary>
        /// Start run the exe at the remote computor
        /// </summary>
        private static void StartRemoteExe() {
            string name = "UPC";
            string password = "imr360";
            ConnectionOptions connOption = new ConnectionOptions();
            connOption.Username = name;
            connOption.Password = password;
            ManagementPath mngPath = new ManagementPath(@"\" + "192.168.1.3" + @" ootcimv2:Win32_Process");//\192.168.1.3 ootcimv2:Win32_Process
            Console.WriteLine(ManagementPath.DefaultPath);
            ManagementScope scope = new ManagementScope(mngPath, connOption);
            scope.Connect();
            ObjectGetOptions objOption = new ObjectGetOptions();
            ManagementClass classInstance = new ManagementClass(scope, mngPath, objOption);
            MethodDataCollection.MethodDataEnumerator enumera=classInstance.Methods.GetEnumerator();
            Console.WriteLine("methods out="+classInstance.Methods.Count);
            while (enumera.MoveNext())
            {
                Console.WriteLine("method name :" + enumera.Current.Name);
            }
            ManagementBaseObject inParams = classInstance.GetMethodParameters("Create");
            // Fill in input parameter values
            //inParams["CommandLine"] = @"D:ProgramUserAnts20120530UserAnts20120530UserAnts3TaskWorker.exe";//只能启动进程
            //inParams["CommandLine"] = @"C:sharexuefengshanxuefengshan.exe";//只能启动进程
            inParams["CommandLine"] = "schtasks /run /tn "xfs""; //其中Start03是任务计划的名称,需要建立启动exe的计划任务
            // Method Options
            InvokeMethodOptions methodOptions = new InvokeMethodOptions(null, System.TimeSpan.MaxValue);
            // Execute the method
            ManagementBaseObject outParams = classInstance.InvokeMethod("Create", inParams, methodOptions);
            Console.WriteLine("Creation of calculator process returned: " + outParams["returnValue"]);
            Console.WriteLine("Process ID: " + outParams["processId"]);
        }
命令记录:
wmic /TRACE:ON /node:192.168.1.3 /user:UPC /password:imr360 process call create cmd.exe

以上是关于wmi远程启动exe程序的主要内容,如果未能解决你的问题,请参考以下文章

使用wmic.exe绕过应用程序白名单(多种方法)

C:\Windows\System32\wbem\WmiPrvSE.exe远程线程注入

WMI 访问被拒绝

使用 Wmi win32_Process 执行远程进程 - 获取进程的标准输出

win7 64位 winmgmt这是啥程序

电脑指令大全