无法在 C# 中终止进程?
Unable to kill a process in C#?
我目前正在开发一个程序,可以将 Lua 脚本注入 Roblox(是的,我知道),目前一切正常,除了 kill 进程。
由于 Roblox 作为单个进程运行,因此我不需要杀死这棵树。我对该主题进行了一些研究,其中 none 有效。
Roblox 作为一个名为 RobloxPlayer.exe 的进程运行,我相信 Process.GetProcessesByName
应该通过它的名称获取进程。成为 Roblox,而不是 RobloxPlayer.exe
Process[] processes = Process.GetProcessesByName("Roblox");
foreach (Process process in processes)
{
process.Kill();
process.WaitForExit();
}
您可以对所有进程进行字符串匹配并终止任何符合您条件的进程。
String findThisProcess = "Roblox";
foreach (Process process in Process.GetProcesses()) //provides you with a list of all running processes
{
try
{
if (process.ProcessName.Contains(findThisProcess, StringComparison.InvariantCultureIgnoreCase))
{
Console.WriteLine($"Process: {Path.GetFileName(process.MainModule.FileName)}, Name: {process.ProcessName}");
process.Kill();
process.WaitForExit();
}
}
catch (Exception ex)
{
Console.WriteLine("Couldn't terminate process: " + ex);
}
}
编辑:添加了 InvariantCultureIgnoreCase
以便它匹配进程,无论大小写如何。例如。即使输入 vsdebug
.
也会匹配 VsDebugConsole.exe
获取变量中当前进程的名称。
var appName = Process.GetCurrentProcess();
var isInstanceAlready = Process.GetProcessesByName(appName.ProcessName).Where(p => p.Id != appName.Id).FirstOrDefault();
我目前正在开发一个程序,可以将 Lua 脚本注入 Roblox(是的,我知道),目前一切正常,除了 kill 进程。 由于 Roblox 作为单个进程运行,因此我不需要杀死这棵树。我对该主题进行了一些研究,其中 none 有效。
Roblox 作为一个名为 RobloxPlayer.exe 的进程运行,我相信 Process.GetProcessesByName
应该通过它的名称获取进程。成为 Roblox,而不是 RobloxPlayer.exe
Process[] processes = Process.GetProcessesByName("Roblox");
foreach (Process process in processes)
{
process.Kill();
process.WaitForExit();
}
您可以对所有进程进行字符串匹配并终止任何符合您条件的进程。
String findThisProcess = "Roblox";
foreach (Process process in Process.GetProcesses()) //provides you with a list of all running processes
{
try
{
if (process.ProcessName.Contains(findThisProcess, StringComparison.InvariantCultureIgnoreCase))
{
Console.WriteLine($"Process: {Path.GetFileName(process.MainModule.FileName)}, Name: {process.ProcessName}");
process.Kill();
process.WaitForExit();
}
}
catch (Exception ex)
{
Console.WriteLine("Couldn't terminate process: " + ex);
}
}
编辑:添加了 InvariantCultureIgnoreCase
以便它匹配进程,无论大小写如何。例如。即使输入 vsdebug
.
VsDebugConsole.exe
获取变量中当前进程的名称。
var appName = Process.GetCurrentProcess();
var isInstanceAlready = Process.GetProcessesByName(appName.ProcessName).Where(p => p.Id != appName.Id).FirstOrDefault();