关于c#:定期关闭程序

Periodically shut down a program

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

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

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

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


是否最好不要让用户首先启动程序?

Windows2000及更高版本(XP、Vista,"七")具有软件限制策略-允许您设置程序白名单或黑名单。在白名单的情况下,只允许启动列出的程序,而在黑名单的情况下,除了列出的程序外,其他所有程序都允许启动。此检查发生在操作系统级别,无法绕过(管理员除外)。示例请参见例如。

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

注意:并非所有版本的Windows都允许管理员设置组策略,IIRC在Windows XP Home或Vista Home Basic中不能这样做。

此外,用户将是用户:如果你阻止本地游戏,他们将玩Flash浏览器游戏;如果你阻止Flash,他们将在浏览器JavaScript游戏中玩;如果你阻止,他们将玩纯HTML文本冒险游戏(而你无意中阻止了大多数其他网站的运行,这是理所当然的)。

如果你阻止了这一点,用户将放弃电脑而去吸烟,或者带上纸牌和玩纸牌IRL,或者找到无数其他避免工作的方法(假设我们谈论的是Office用户),所以这也不是一个胜利;除非你试图让用户离开电脑(从你的评论中看)。


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

在沉默中杀死它,甚至不说"我们道歉"是邪恶的。


如果要在隐藏窗口中运行某个进程,请尝试此操作:

1
2
3
4
5
6
7
8
var processInfo = new ProcessStartInfo()
                      {
                         Arguments ="/f /im kol.exe",
                         FileName ="taskkill.exe",
                         WindowStyle = ProcessWindowStyle.Hidden
                      };

Process.Start(processInfo );

您可以使用process.kill来终止另一个进程:

1
2
3
4
foreach (var process in Process.GetProcessesByName("kol"))
{
    process.Kill();
}