2013-08-03 4 views
-1

Я разрабатываю приложение на 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 , &regHandle ,NULL); 
RegSetValueEx(regHandle,"DisableTaskmgr",0, REG_DWORD,data ,sizeof(DWORD)); 

Он работал хорошо в учетной записи администратора. Но в ограниченной учетной записи пользователя и гостевой учетной записи это не работает. Он попытался изменить уровень UAC на административные привилегии/Наивысший доступный. Оба не работали. Я также проверил, могу ли я сделать это, написав значение reg до HKEY_LOCAL_MACHINE. К сожалению, это тоже не получилось.

Я хорошо искал Google и искал stackoverflow, но не нашел решения. Вручную редактирование групповой политики/реестра вовсе не является решением, я должен делать это изнутри своего приложения по мере необходимости. Заранее спасибо за вашу помощь.

+0

Быть способным редактировать регистрацию, когда у вас нет прав на это, было бы весьма недостатком безопасности, не так ли? Другими словами, вы спрашиваете «Как обойти безопасность в Windows» и ожидаем, что люди скажут вам (в случае, если кто-то знает ...). –

+0

Я бы добавил запись «Deny execute» (или просто «deny all») для этой учетной записи пользователя в DACL исполняемого файла TaskMan. –

+0

@MatsPetersson, я не думаю, что это недостаток безопасности. Общеизвестно, что для небольшого приложения необходимо отключить диспетчер задач. Почему бы не сделать это, если приложение работает с правами администратора из ограниченной учетной записи. Поэтому окна имеют UAC? – Jasir

ответ

2

Я предполагаю, что это потому, что вы изменяете параметр групповой политики с помощью реестра:

enter image description here

Но групповая политика не вступила в силу еще. Microsoft says you have to reboot.

Возможно принудительно обновить групповую политику

команда Gpupdate/сила

заставит его действовать.

Это то, что сделает ваш установщик, а затем напомнить пользователю, что они должны перезагрузить компьютер до завершения установки. Или, может быть, так как это только HKCurrentUser, выйдите из системы и войдите в систему.