【发布时间】:2015-09-17 19:21:20
【问题描述】:
我试图杀死远程计算机上的一个进程,但它不起作用,而且我没有收到任何错误。 我正在使用此代码:
ManagementScope scope = new ManagementScope("\\\\" + txtMaquina.Text + "\\root\\cimv2");
scope.Connect();
ObjectQuery query = new ObjectQuery("select * from Win32_process where name = '" + lstProcessos.SelectedItem.ToString() + "'");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
ManagementObjectCollection objectCollection = searcher.Get();
foreach (ManagementObject managementObject in objectCollection)
managementObject.InvokeMethod("Terminate", null);
计算机名称是 txtMaquina.Text,而我从 ListView 上的选定项目中获取的进程名称
有人知道这里出了什么问题吗?
【问题讨论】:
-
lstProcessos.SelectedItem.ToString()可能不正确..它可能返回类型名称..(又名ListViewItem)..显然这不是您想要的.. ListViews 可以是相当复杂的控件(即, 如果这是一个列表框控件,则 selectedItem 上可能会有一个Text属性..) -
如果是绑定控件,值一般在dataItem属性中;您将明确地从对象转换为字符串.....只需放下一个调试点并查看
lstProcessos.SelectedItem实例(使用本地/监视窗口..或将鼠标悬停在代码sn-p本身上..或使用即时控制台..