2013-10-28 2 views
2

Я хочу открыть удаленный компьютер процесса pon, этот удаленный компьютер находится внутри локальной сети. Я пробую эту команду, и в удаленной машине ничего не происходит, этот пользователь, с которым я подключаюсь, имеет права администратора. Обе машины, работающие Windows 7Выполнение процесса на удаленной машине с использованием WMI

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); 

    } 
} 
+0

[ 'Чтобы завершить процесс, вы не владеете, включите SeDebugPrivilege privilege'] (http://msdn.microsoft.com/en-us/library/aa393907 (v = vs.85). aspx) – rene

ответ

2

вы не открывая процесс с этим кодом, но вы перечисляете все запущенный процесс по имени "iexplore.exe" и закрыть их.

Я думаю, проще, лучше всего использовать SysInternals PsExec или Task Scheduler API

Если вы хотите использовать WMI код должен выглядеть следующим образом:

object theProcessToRun = { "YourFileHere" }; 

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

theClass.InvokeMethod("Create", theProcessToRun); 

-------- - В ответ на ваш комментарий ------------------

Прежде всего, вам нужно изменить свое отношение и подход к кодированию и прочитать код, который вы копируете/склеивание.

Затем вы должны изучить немного больше о языках программирования.

Нет. Я не буду писать код для вас. Я дал вам намек на правильное направление. теперь ваша очередь развивать его. Повеселись!!

+0

Что мне нужно изменить (я новый разработчик ...)? – user1860934

+0

Добавьте это к моему коду или используйте только это? – user1860934

+0

Смотрите мое обновление, оно все еще не работает, я делаю что-то неправильно? – user1860934

0

Это сценарий, который я сделал для своей компании до этого, используя скрипт 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 
Смежные вопросы