如何防止在我的桌面上启动 TaskManager?

Posted

技术标签:

【中文标题】如何防止在我的桌面上启动 TaskManager?【英文标题】:How to prevent starting TaskManager in my Desktop? 【发布时间】:2009-11-19 00:32:50 【问题描述】:

我正在使用 win32 API 在 Windows XP/Vista 和 7 中创建一个新桌面。 这更像是拥有一个安全的桌面,我不想让任何其他应用程序在该桌面上执行。

好吧,在 Windows XP 中,如果我按 strg+shift+Esc 或 strg+alt+ent,在我创建的桌面中,我在我的桌面上看不到任务管理器,而是在默认桌面上。

好吧,那没关系,但在 Windows Vista 中,同样的操作我会在我的桌面中获得任务管理器,用户可以使用 File->New task (Run...) 菜单启动另一个应用程序。

这是我的问题,防止任务管理器显示在我创建的桌面中甚至阻止启动它的最佳方法是什么?

1) 使用注册表项, 2)捕捉击键? 3)还有什么???

提前致谢! 咕噜噜

【问题讨论】:

您想要企业安全,还是要防止您的孩子打败您的网络保姆? 查看我对how-do-i-stop-an-application-from-opening 的解决方案 这会很好,我刚刚测试过。 好吧,我不明白你的真正意思,但是为了信息,我在我的查看器中显示了一些信息,我不希望任何其他可以使用 GetDC(0) 的软件通过我的信息调用并利用该 DC 来操纵信息!就是这样! 这是您分发给其他用户的程序吗? 是的!该公司正在分发该软件! 【参考方案1】:

组策略是您的朋友。 Here's how to disable it.

【讨论】:

谢谢!但我不想为每个人甚至我的桌面禁用它!正如我所说,当我更改桌面时,我想阻止任务管理器被执行或显示在我通过 CreateDesktop() 调用创建的桌面中!【参考方案2】:

我假设您正在调用CreateDesktop,如果是这样,您应该能够使用仅允许访问您的程序的安全描述符锁定该桌面

【讨论】:

没错!我正在使用 CreateDesktop() API CALL!您对如何定义安全描述符有任何提示或示例!我尝试了但失败了!谢谢!【参考方案3】:

这可能不是最好的解决方案,但您可以随时监视任务管理器并关闭它

foreach (Process clsProcess in Process.GetProcesses()) 
        if (clsProcess.ProcessName.StartsWith("taskmgr"))
        
            clsProcess.Kill();
            return true;
        
    

代码在 C# 中

【讨论】:

嗯,谢谢你的提示。这是个好主意!问题是我是否足够快以每隔 50 毫秒获取进程列表并检查“taskmgr”?嗯,我会试试的!谢谢。【参考方案4】:

将 taskman.exe 重命名为其他名称。

【讨论】:

这可能是最简单的方法,但可能不是最好的方法。 好吧,我不确定UAC是否会让我更改文件名!但是感谢您的评论!

以上是关于如何防止在我的桌面上启动 TaskManager?的主要内容,如果未能解决你的问题,请参考以下文章

桌面悬停媒体查询不能防止粘滞悬停

防止同一帐户多次登录(桌面应用程序)

如何使用响应大小的图像防止卡顿并减少布局偏移?

启动平板电脑时 Webview URL 重定向/更改

如何防止目录浏览?

在我的启动程序启动期间隐藏桌面