以编程方式禁用Taskmanager(ctrl + alt + del)

时间:2019-03-20 09:24:22

标签: c# registry taskmanager group-policy

我目前正在开发一个应用程序,以更轻松地配置Win10 IoT机器。 想象一个用户正在使用自定义外壳并禁用了几乎所有预定义的快捷方式的情况,因此他只能使用生产应用程序。 为了切换用户并配置系统,必须保持“ Win + L”处于启用状态。 现在,在出现的“ Win + L”屏幕中,他仍然可以找到进入Taskmanager的选项(不需要的选项)。 管理员可以使用gpedit来防止这种情况的发生,并在计算机上更改ctrl + alt + del选项。 这正是我想要做的。

Programmatically disabling Taskmanager using c#

非常接近,,但是此注册表项仅适用于当前登录的用户。在我的情况下,该注册表项是管理员,因为配置工具需要管理权限(可以配置UWF筛选器等)。

如果我在LocalMachine中而不是CurrentUser中尝试相同的操作,则将按预期方式创建注册表项,但它完全无效。

在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我找到了一种实现自己想要的方式的方法:

public void SetTaskManager(bool enable)
    {
      // Load settings of desired user via UserName property
      using (PowerShell PowerShellInstance = PowerShell.Create())
      {
        var command = Properties.Settings.Default.LoadRegistryOfUser;
        command = command.Replace("USERNAME", UserName);
        PowerShellInstance.AddScript(command);
        var res = PowerShellInstance.Invoke();
      }

      // Create the key and entry for the registry or delete it if
      // enable == true
      RegistryKey objRegistryKey = Registry.Users.CreateSubKey(
         UserName + @"\Software\Microsoft\Windows\CurrentVersion\Policies\System");
      if (enable && objRegistryKey.GetValue("DisableTaskMgr") != null)
        objRegistryKey.DeleteValue("DisableTaskMgr");
      else
        objRegistryKey.SetValue("DisableTaskMgr", "1", RegistryValueKind.DWord);

      objRegistryKey.Close();

      // Close the registry of the user, otherwise he cant log on
      using (PowerShell PowerShellInstance = PowerShell.Create())
      {
        var command = Properties.Settings.Default.CloseRegistryOfUser;
        command = command.Replace("USERNAME", UserName);
        PowerShellInstance.AddScript(command);
        var res = PowerShellInstance.Invoke();
      }
    }

裙子:

LoadRegistryOfUser: reg load HKU \ USERNAME C:\ users \ USERNAME \ NTUSER.DAT

CloseRegistryOfUser: reg卸载HKU \ USERNAME

它有点古怪,但这是我到目前为止发现的唯一方法。 希望这会有所帮助。