Как выполнить процесс на удаленной машине, в C #

то, о чем вы просите, напрямую не поддерживается, но может быть достигнуто путем добавления другого шага фильтра после возвращения запроса.

во-первых, .populate( 'tags', null, { tagName: { $in: ['funny', 'politics'] } } ) определенно то, что вам нужно сделать, чтобы отфильтровать теги документы. то после возвращения запроса вам нужно будет вручную отфильтровать документы, у которых нет документов tags, которые соответствуют критериям заполнения. что-то вроде:

query....
.exec(function(err, docs){
   docs = docs.filter(function(doc){
     return doc.tags.length;
   })
   // do stuff with docs
});
13
задан Jon Schneider 1 September 2015 в 14:27
поделиться

4 ответа

Можно использовать PsExec из http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx

или WMI :

object theProcessToRun() = { "YourFileHere" };

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

theClass.InvokeMethod("Create", theProcessToRun);
16
ответ дан 1 December 2019 в 19:23
поделиться

Согласно MSDN , объект Процесс разрешает доступ только к удаленным процессам, но не к возможности запускать или останавливать удаленные процессы. Итак, чтобы ответить на ваш вопрос относительно использования этого класса, вы не можете.

7
ответ дан 1 December 2019 в 19:23
поделиться

Я не верю, что вы можете запустить процесс напрямую через UNC-путь; то есть, если System.Process использует comspec Windows для запуска приложения ... как насчет того, чтобы проверить эту теорию, сопоставив диск с "\ someComputer \ somePath", а затем изменив свое создание ProcessStartInfo на это? Если это работает таким образом, вы можете рассмотреть возможность временного сопоставления диска программным способом, запустить приложение, а затем удалить сопоставление (так же, как pushd / popd работает из командного окна).

-5
ответ дан 1 December 2019 в 19:23
поделиться

Используйте один из следующих способов:

Или, если вам захочется, внедрите свою собственную службу или COM-компонент. Это будет очень близко к тому, что делает PsExec.

Из всех этих методов я предпочитаю планировщик задач. На мой взгляд, это самый чистый API из всех. Подключитесь к удаленному планировщику задач, создайте новую задачу для исполняемого файла, запустите его. Примечание: имя исполняемого файла должно быть локальным для этой машины. Не \servername\path\file.exe, а c:\path\file.exe. Удалите задачу, если вам так хочется.

Все эти методы требуют, чтобы у вас был административный доступ к целевой машине.

ProcessStartInfo не способен запускать удаленные процессы.

14
ответ дан 1 December 2019 в 19:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: