1
我的用户位于管理员组中。我使用的.NET WMI API(System.Management)使用此代码来杀死一个进程:无法终止使用WMI的进程,但taskkill可以运行
var scope = new ManagementScope("\root\cimv2");
scope.Connect();
var query = new ObjectQuery(
string.Format("Select * from Win32_Process Where ProcessID = {0}",
processId));
var searcher = new ManagementObjectSearcher(scope, query);
var coll = searcher.Get().GetEnumerator();
coll.MoveNext();
var mgmtObj = (ManagementObject)coll.Current;
var ret = (uint) mgmtObj.InvokeMethod("Terminate");
// ret == 2 here, meaning "Access Denied"
它无法杀死进程,并返回一个2
(Access Denied
)。但是,如果我使用:
Process.Start("cmd", string.Format("/c \"taskkill /f /pid {0}\"", processId));
该进程死亡。 (但如果我忽略/f
它失败)。
有什么办法可以用WMI来终止进程吗?
编辑:我发现 http://msdn.microsoft.com/en-us/library/windows/desktop/aa393907(v=vs.85).aspx如下:
要终止,你不拥有,使 SeDebugPrivilege特权的过程。
该页面提供了VBScript代码,但是如何在C#中执行此操作?
它的工作!谢谢! – JoelFan 2013-04-30 21:48:11