使用受限用户帐户中的c#禁用任务管理器

时间:2010-06-09 02:30:46

标签: c#

我需要从我的应用程序中禁用并启用taskmanager。 我正在为我的Kiosk应用程序执行此操作。我知道我能做到这一点 通过使用下面的代码更改注册表中的密钥。但问题 我的自助服务终端应用程序将运行在有限的用户帐户中 不允许应用程序更改注册表级别的密钥。

代码在管理员帐户中完美运行:

    RegistryKey regkey;
        string keyValueInt = "1";
        string subKey = "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System";
        regkey = Registry.CurrentUser.CreateSubKey(subKey);
        regkey.SetValue("DisableTaskMgr", keyValueInt);
        regkey.Close();

如何在受限用户帐户中实现此目的?

4 个答案:

答案 0 :(得分:1)

打开记事本,复制并粘贴以下代码,另存为Disable.reg并运行(双击文件):

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
"DisableTaskMgr"=dword:1

答案 1 :(得分:0)

在将应用程序部署到目标计算机的过程中,您可能在某个时候拥有管理访问权限,是吗?如果是这样,请知道注册表项是Win32安全对象。

以管理员身份登录,右键单击注册表项,选择“权限”,然后提供读/写/等。对运行应用程序的用户帐户的访问权限。单击高级按钮并确保为所有子项授予相同的权限,因为您正在使用应用程序创建密钥。

要自动部署应用程序,可以使用Win32安全API上的.NET框架包装程序从管理员用户帐户以编程方式完成这些步骤。

显然,这种解决方案会产生安全漏洞。您授予该用户帐户访问权限,据我所知,可能会利用该权限获取root访问权限。如果没有深入调查任务管理器的副作用,就无法确定漏洞的范围。既然您正在谈论自助服务终端应用程序,那么这似乎不会对您造成任何问题,但我只是想确保您了解自己行为的后果。

如果您想要一个真正安全的应用程序,您需要创建一个在管理帐户中运行的服务,并让它实现一个API,它只提供您真正需要的任务管理器的功能,而不是暴露整个事物并通过管道或共享内存或其他一些进程间通信机制公开API。

答案 2 :(得分:0)

对于自助服务终端应用程序,我通常会创建一个在启动时应用的限制性组策略。使用group policy editor,您可以禁止用户访问开始栏,任务管理器,ctrl alt delete,Alt-Tab,Alt-F4等。如果您无法获得此类操作系统的访问权限,你的自助服务终端应用程序会出现问题。

答案 3 :(得分:0)

代码需要提升权限才能访问注册表。但是,只有一段代码需要这些额外的权限。为了处理这种情况,使用了模拟,即您将仅以普通用户身份执行此应用程序,但该特定代码段将像管理员一样执行。

http://msdn.microsoft.com/en-us/library/system.security.principal.windowsimpersonationcontext.aspx