Моя цель:C# WMI запрос
- Начать процесс (Установить приложение) на удаленной машине с Params
- Дождитесь завершения процесса и бросить событие, когда она завершена.
Я получаю сообщение об ошибке "запроса не поддается синтаксическому анализу" в этой строке:
уаг Бодрствующего = manWatch.WaitForNextEvent();
У меня есть база данных о 2xx различных приложениях, которые я могу установить с помощью этого метода. Не каждое приложение дает мне эту ошибку во время установки. Некоторые из них успешны, а некоторые нет. Я действительно верю, что это то, как я собираюсь получить это событие. Есть идеи?
private void StartAppAction(string PCName, string Command)
{
string Params = @"\\" + PCName + @"\C$\SoftwareInstall\" + Command;
ConnectionOptions conOpt = new ConnectionOptions();
conOpt.Impersonation = ImpersonationLevel.Impersonate;
conOpt.Authentication = AuthenticationLevel.Default;
conOpt.EnablePrivileges = true;
ManagementScope manScope = new ManagementScope(String.Format(@"\\{0}\ROOT\CIMV2", PCName), conOpt);
manScope.Connect();
ObjectGetOptions objGetOpt = new ObjectGetOptions();
ManagementPath manPath = new ManagementPath("Win32_Process");
ManagementClass manClass = new ManagementClass(manScope, manPath, objGetOpt);
ManagementBaseObject inParams = manClass.GetMethodParameters("Create");
inParams["CommandLine"] = Params;
ManagementBaseObject outParams = manClass.InvokeMethod("Create", inParams, null);
string queryString = "SELECT * From WIN32_ProcessStopTrace WHERE ProcessID= outParams['ProcessID']";
WqlEventQuery wqlQuery = new WqlEventQuery(queryString);
ManagementEventWatcher manWatch = new ManagementEventWatcher(@"\\" + PCName + @"\root\CIMV2", "SELECT * From WIN32_ProcessStopTrace WHERE ProcessID=" + outParams["ProcessID"]);
var watcher = manWatch.WaitForNextEvent();
if (watcher["ExitStatus"].ToString() == "0")
{
MessageBox.Show("Remote Exection Finished Succesfully with ExitCode 0");
}
else
{
MessageBox.Show("Remote Exection exited with the code of " + watcher["ExitStatus"].ToString());
}
}
Спасибо @RRUZ за ответ. Просто заменил мой код на ваш, и я все еще получаю ту же проблему. Мне также пришлось добавить двойные кавычки в части outParams ["ProcessID"]. – HiTech