2010-06-09 23 views
0

我需要从我的应用程序中禁用并启用任务管理器。 我正在为我的Kiosk应用程序执行此操作。我知道我可以通过使用下面的代码更改注册表项来执行此操作 。但问题 是我的自助服务终端应用程序将运行在有限的用户帐户中, 不允许应用程序更改注册表级别的密钥。使用限制用户帐户中的c#禁用任务管理器

代码工作完全管理员帐户:

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

我怎样才能在有限的用户帐户实现这一目标?

+3

请不要转贴的问题。如果您有更多要添加的内容,请编辑您现有的问题。 [在OS硬化机器上禁用任务管理器使用c#](http://stackoverflow.com/questions/2986782/disabling-task-manager-using-c-in-os- hardened-machine) – 2010-06-09 02:42:49

+0

我觉得这个问题是完全不同的从我以前的帖子。我同意这是关于任务管理器。但是这个问题的原因是不同的。它关于用户帐户而不是OS强化。 – Anuya 2010-06-09 03:01:30

回答

0

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

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

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

显然,此解决方案会产生安全漏洞。您所授予的用户帐户访问权限,据我所知,可能会被利用来获得root访问权限。如果没有深入调查任务管理器的副作用,则无法确定洞的范围。既然你在谈论一个自助服务终端应用,看起来这对你来说可能不是问题,但我只是想确保你知道你的行为的后果。

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

0

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

1

打开记事本,复制和粘贴下面的代码,保存为Disable.reg和运行(双击该文件):

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

将此导入到注册表中需要具有管理权限,原始问题明确指出的管理权限将不可用。 – Nick 2016-03-10 18:02:41