Программно отключить Taskmanager (ctrl + alt + del) - PullRequest
0 голосов
/ 20 марта 2019

В настоящее время я разрабатываю приложение для более легкой настройки машин IoT в Win10. Представьте себе пользователя на механической обработке, имеющей пользовательскую оболочку и почти все предварительно определенные ярлыки, отключенные, чтобы он мог работать только с рабочим приложением. Однако для переключения пользователей и настройки системы «Win + L» должен оставаться включенным. Теперь в появившемся окне «Win + L» он все равно найдет возможность войти в Taskmanager (что нежелательно). Чтобы предотвратить это, администратор может использовать gpedit и изменить параметры ctrl + alt + del на компьютере. Это именно то, что я хочу сделать.

Программно отключить Taskmanager с помощью c #

Довольно близко, , но эта запись реестра работает только для текущего зарегистрированного пользователя , который в моем случае является администратором, так как инструменту конфигурации требуются права администратора (можно настроить фильтр UWF и т. Д.).

Если я попытаюсь сделать то же самое в LocalMachine, а не в CurrentUser, запись реестра будет создана, как ожидается, но это никак не повлияет.

Заранее благодарю за помощь.

1 Ответ

0 голосов
/ 20 марта 2019

Я нашел способ добиться того, что хотел:

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 unload HKU \ USERNAME

Это немного странно, но единственный способ, который я нашел до сих пор.Надеюсь, это поможет.

...