Я разрабатываю приложение на C ++, из которого пользователь может отключить диспетчер задач из приложения (и немного больше функций).
Вот как я это сделал в Visual C ++:
HKEY regHandle;
DWORD dwValue = 1;
BYTE* data = (BYTE*)&dwValue;
RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", 0, NULL, NULL, KEY_WRITE | KEY_WOW64_32KEY,NULL , ®Handle ,NULL );
RegSetValueEx(regHandle,"DisableTaskmgr",0, REG_DWORD,data ,sizeof(DWORD));
Это хорошо работало в учетной записи администратора. Но в ограниченной учетной записи пользователя и гостевой учетной записи это не работает. Он пытался изменить уровень UAC на административные привилегии / Максимально доступный. Оба не сработали. Я также проверил, могу ли я сделать это, записав значение reg в HKEY_LOCAL_MACHINE
, К сожалению, это тоже не удалось.
Я хорошо гуглил и искал stackoverflow, но не нашел решения. Редактирование групповой политики / реестра вручную вовсе не является решением, я должен делать это изнутри моего приложения по мере необходимости. Заранее спасибо за помощь.
Я предполагаю, что это потому, что вы изменяете параметр групповой политики через реестр:
Но групповая политика еще не вступила в силу. Microsoft говорит, что вам нужно перезагрузить компьютер.
Возможно принудительное обновление групповой политики
gpupdate / force
заставит это вступить в силу.
Это то, что должен сделать ваш установщик, а затем напомнить пользователю, что он должен перезагрузить компьютер до завершения установки. Или, может быть, поскольку это просто HKCurrentUser, выход из системы и вход в систему будут работать.
Других решений пока нет …