Execute a process in a remote machine using WMI

11,827

you are not opening a process with that code but you are enumerating all the running process named "iexplore.exe" and close them.

I think an easier, better way is to use SysInternals PsExec or the Task Scheduler API

If you want to use WMI your code should look like this:

object theProcessToRun = { "YourFileHere" };

ManagementClass theClass = new ManagementClass(@"\\server\root\cimv2:Win32_Process");

theClass.InvokeMethod("Create", theProcessToRun);

----------In reply to your comment------------------

First of all you need to change your attitude and approach to coding and read the code that your are copy/pasting.

Then you should study a little more about programming languages.

No I will not write the code for you. I gave you an hint to point to the right direction. now it is your turn to develop it. Have fun!!

Share:
11,827
user1860934
Author by

user1860934

Updated on June 04, 2022

Comments

  • user1860934
    user1860934 almost 2 years

    I want to open process pon remote machine, this remote machine is inside local network. I try this command and in the remote machine nothing happen, this user that i connect with have administrators rights. Both machines running 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);
    
        }
    }
    
  • user1860934
    user1860934 over 10 years
    What i need to change (i am a new developer...) ?
  • user1860934
    user1860934 over 10 years
    See my update, it still not working, am i doing something wrong ?
  • giammin
    giammin over 10 years
    @user1860934 what does a foreach mean in coding? what the SelectQuery is doing??
  • user1860934
    user1860934 over 10 years
    Go over all processes