C# process.kill()方法不使用';我不能在Windows7上工作
我想从列表中删除一个进程。因此,我首先列出进程,然后使用C# process.kill()方法不使用';我不能在Windows7上工作,c#,list,windows-7,process,C#,List,Windows 7,Process,我想从列表中删除一个进程。因此,我首先列出进程,然后使用process.kill()。但它不起作用。下面是代码,我不知道我做错了什么或我必须做什么。(我有Windows7)。你能帮忙吗 private void btnProcess_Click(object sender, EventArgs e) { UpdateProcessList(); } private void btnRemove_Click(object s
process.kill()
。但它不起作用。下面是代码,我不知道我做错了什么或我必须做什么。(我有Windows7)。你能帮忙吗
private void btnProcess_Click(object sender, EventArgs e)
{
UpdateProcessList();
}
private void btnRemove_Click(object sender, EventArgs e)
{
try
{
foreach (Process p in Process.GetProcesses())
{
string strName = listBox1.SelectedItem.ToString();
if (p.ProcessName == strName)
{
p.Kill();
}
listBox1.Items.Remove(strName);
}
UpdateProcessList();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
private void UpdateProcessList()
{
listBox1.Items.Clear();
foreach (Process p in Process.GetProcesses())
{
listBox1.Items.Add(p.ProcessName);
}
listBox1.Sorted = true;
}
这是因为您没有管理员权限 跟随下面的帖子
这是因为您没有管理员权限 跟随下面的帖子
要终止进程,您必须在管理帐户下运行。这意味着您是“真正的”管理员,或者您的用户帐户控制(UAC)已关闭
否则Process.Kill()将失败。为了终止进程,您必须在管理帐户下运行。这意味着您是“真正的”管理员,或者您的用户帐户控制(UAC)已关闭
foreach (Process p in Process.GetProcesses())
{
string strName = listBox1.SelectedItem.ToString();
if (p.ProcessName == strName)
{
p.Kill();
}
listBox1.Items.Remove(strName);
}
否则,Process.Kill()将失败
foreach (Process p in Process.GetProcesses())
{
string strName = listBox1.SelectedItem.ToString();
if (p.ProcessName == strName)
{
p.Kill();
}
listBox1.Items.Remove(strName);
}
您的代码中有一个逻辑错误。即使进程名称不匹配,也可以调用Remove()方法。只有当所选项目是GetProcesses()返回的第一个项目时,此代码才能工作,这种可能性很低。更常见的结果是,在第一次通过循环时,您将从列表中删除该项,结果什么也没有杀死。使用调试器很容易看到
一个简单的解决方法是将Remove()调用移动到if()语句块内
一个完全更好的方法是:
foreach (var p in Process.GetProcessesByName(listBox1.SelectedItem.ToString()) {
p.Kill();
}
您的代码中有一个逻辑错误。即使进程名称不匹配,也可以调用Remove()方法。只有当所选项目是GetProcesses()返回的第一个项目时,此代码才能工作,这种可能性很低。更常见的结果是,在第一次通过循环时,您将从列表中删除该项,结果什么也没有杀死。使用调试器很容易看到
一个简单的解决方法是将Remove()调用移动到if()语句块内
一个完全更好的方法是:
foreach (var p in Process.GetProcessesByName(listBox1.SelectedItem.ToString()) {
p.Kill();
}
你有权限杀死那个进程吗?我是这台计算机上的管理员,并以管理员权限运行它…你想杀死哪个进程?你的代码可以杀死Notepad.exe的一个实例吗?什么叫“不工作”?你至少应该告诉我们出了什么问题(抛出异常…等等)。确保你真的是一名管理员。在Windows 7和Vista上,如果启用了用户访问控制,则管理帐户实际上不是管理员。因此,您需要在管理员帐户下运行或关闭UAC。您有权限终止该进程吗?我是这台计算机上的管理员,并以管理员权限运行它…您试图终止哪个进程?你的代码可以杀死Notepad.exe的一个实例吗?什么叫“不工作”?你至少应该告诉我们出了什么问题(抛出异常…等等)。确保你真的是一名管理员。在Windows 7和Vista上,如果启用了用户访问控制,则管理帐户实际上不是管理员。所以,您需要在管理员帐户下运行,或者关闭UAC。我已经看到了,但它会引发错误,无法修复问题,或者可能不太了解它。如果你能告诉我如何在我的项目上使用它…在运行你的exe时,你能确保它是以管理员权限运行的吗?如果我没有管理员权限,它应该会引发一个错误,不是吗?我见过它,但它会引发错误,无法修复问题,或者可能不太理解它。如果你能告诉我如何在我的项目上使用它…在运行你的exe时,你能确保它是以管理员权限运行的吗?如果我没有管理员权限,它应该会引发一个错误,不是吗?是的,你是对的,谢谢,但遗憾的是它没有解决问题。我不得不说,如果这个答案对你没有帮助,你将毫无帮助。是的,你是对的,谢谢你的回答,但遗憾的是它没有解决问题。我不得不说,如果这个答案对你没有帮助,你将毫无帮助。