Я разрабатываю приложение на 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
. К сожалению, это тоже не получилось.
Я хорошо искал Google и искал stackoverflow, но не нашел решения. Вручную редактирование групповой политики/реестра вовсе не является решением, я должен делать это изнутри своего приложения по мере необходимости. Заранее спасибо за вашу помощь.
Быть способным редактировать регистрацию, когда у вас нет прав на это, было бы весьма недостатком безопасности, не так ли? Другими словами, вы спрашиваете «Как обойти безопасность в Windows» и ожидаем, что люди скажут вам (в случае, если кто-то знает ...). –
Я бы добавил запись «Deny execute» (или просто «deny all») для этой учетной записи пользователя в DACL исполняемого файла TaskMan. –
@MatsPetersson, я не думаю, что это недостаток безопасности. Общеизвестно, что для небольшого приложения необходимо отключить диспетчер задач. Почему бы не сделать это, если приложение работает с правами администратора из ограниченной учетной записи. Поэтому окна имеют UAC? – Jasir