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

Programmatically disable Taskmanager (ctrl+alt+del )

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

Programmatically disabling Taskmanager using c#

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

如果我在 LocalMachine 而不是 CurrentUser 中尝试相同的操作,注册表条目会按预期创建,但它根本没有任何效果。

预先感谢您的帮助。

我找到了实现我想要的方法:

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: 注册加载 HKU\USERNAME C:\users\USERNAME\NTUSER.DAT

关闭用户注册: reg 卸载 HKU\USERNAME

它有点老套,但这是我目前找到的唯一方法。 希望这有帮助。