1

我想杀死一个名为 KnightOnline 的游戏的可执行文件并拒绝用户运行它。我在用着:

Process.Start("taskkill.exe", "/f /im kol.exe");

但它显示了一个命令窗口。如何隐藏命令窗口,或者是否有另一种专业但臭名昭著的方法来拒绝不需要的程序?

编辑: 我编辑了主机并阻止了游戏的登录页面作为解决方案。

4

4 回答 4

4

一个专业的方法是让用户知道某些正在运行的程序可能会产生冲突,并要求用户在继续之前关闭它。

甚至不说“我们道歉”就默默地杀死它是邪恶的。

于 2010-08-25T12:36:07.933 回答
4

首先不要让用户启​​动程序会更好吗?

Windows 2000 及更高版本(XP、Vista、“七”)具有软件限制策略 - 允许您设置程序的白名单或黑名单。在白名单的情况下,仅允许启动列出的程序,而在黑名单的情况下,将允许除列出的程序之外的所有程序。此检查发生在操作系统级别,并且无法绕过(管理员除外)。有关示例,请参见例如this

(黑名单非常无效,因为重命名可执行文件允许再次运行它;白名单需要更多的工作来纠正和管理 - 但大多数用户最多需要 20 个应用程序,外加系统服务)

注意:并非所有版本的 Windows 都允许管理员设置组策略,IIRC 您不能在 Windows XP Home 或 Vista Home Basic 中执行此操作。

另外,用户就是用户:如果你屏蔽了本地游戏,他们就会玩 Flash 网页游戏;如果您阻止 Flash,他们将玩浏览器内的 Javascript 游戏;如果您阻止它,他们将玩纯 HTML 文本冒险游戏(同时对您偶然阻止大多数其他网站的运行感到愤怒)。

如果你甚至阻止它,用户将放弃计算机并去吸烟,或者带上卡片并玩纸牌 IRL,或者找到无数其他方式来避免工作(假设我们正在谈论办公室用户) - 所以这不是一个胜利任何一个; 除非您试图让用户离开计算机(从您的评论中可以看出)。

于 2010-08-25T12:41:45.250 回答
2

您可以使用Process.Kill杀死另一个进程:

foreach (var process in Process.GetProcessesByName("kol"))
{
    process.Kill();
}
于 2010-08-25T12:36:18.293 回答
2

如果你想在隐藏窗口中运行某个进程,试试这个:

var processInfo = new ProcessStartInfo() 
                      { 
                         Arguments = "/f /im kol.exe", 
                         FileName = "taskkill.exe", 
                         WindowStyle = ProcessWindowStyle.Hidden 
                      };

Process.Start(processInfo );
于 2010-08-25T12:40:17.577 回答