#include <iostream>
#include <fstream>
#include <windows.h>
#include <stdio.h>
using namespace std;
int main()
{
//+++++АТРИБУТИКА
system ("attrib -r -s -h C://Windows//explorer.exe"); // снимаю атрибуты
system ("attrib -r -s -h C://boot.ini"); // снимаю атрибуты
//-----
HANDLE hAppend;
DWORD dwBytesRead=10, dwBytesWritten=10, dwPos=0;
//+++++ ФАЙЛЫ УКАЗАННЫЕ ДЛЯ ЗАЩИТЫ
hAppend = CreateFile(TEXT("%Windir%//explorer.exe"),GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);// <-открыт на чтение // GENERIC_WRITE, на запись
hAppend = CreateFile(TEXT("C://boot.ini"),GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
//-----
//+++++ВЫДАЕТ СООБЩЕНИЕ ПРИ НЕ ВОЗМОЖНОСТИ ОТКРЫТИЯ ФАЙЛА
if (hAppend == INVALID_HANDLE_VALUE)
{
printf("Could not open C://Windows//explorer.exe.");
printf("Could not open C://boot.ini.");
return 0;
}
if (hAppend == INVALID_HANDLE_VALUE)
{
printf("Could not open C://boot.ini.");
return 0;
}
//-----
// LockFile(hAppend, dwPos, 0, dwBytesRead, 0); // полная блокировка файла, можно и убрать
system ("attrib +r +s +h C://Windows//explorer.exe"); // даю атрибуты
system ("attrib +r +s +h C://boot.ini"); // даю атрибуты
int k=0;
while(k!=1)
{
cin>>k;
}
UnlockFile(hAppend, dwPos, 0, dwBytesRead, 0);
return 0;
}
Защита реестра от изменения
ну к примеру для ветви HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer\NoDrives
Для файлов код я написал
Код:
Может, лучше посмотреть в сторону политик?
последний вариант более интересный, на примере сможешь мне его сформулировать?на примере какого нибудь ключа?
Сейчас - нет, ночью - смогу.
буду благодарен,конечно я подожду
Хотя трояк по ОСРВ мне и так поставят, так что можно и сейчас поискать.
Только по тести его,не забудь мне нужно только чтение с данной ветви,запись какие либо изменения что бы блокировались
Этот вариант тебе не подойдёт. Сейчас потестил и, даже с запретом на редактирование\удаление, ничего не мешает просто добавить новые права, в которых это будет разрешено, даже, если перед этим стояли права для "всех" только на чтение. Видимо, полной защиты никак не получить.
а может такой вариант что бы скрипт работал постоянно,то есть если какие то изменения он сразу же менял значение на указанное
что бы скрипт весел в памяти и посстоянно работал
Да, но это уже не имеет никакого отношения к реестру и задача более сложная, чем просто поменять права.
права легко изменить назад под админом,а вот скрипт надо убить что бы изменить,вот в чем дело
Код:
wsh.Run("""subinacl"" /subkeyreg ""HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies"" /grant=%username%=f /setowner=%username%"), 0 ,True
Можно написать dl и подгружать её во все процессы, она-то и будет мониторить обращение к ключам.
Скинь код то что ты пробовал я хоть на примере посмотрю,что да как делается)
на словах интересно,но умел бы я это сделать уже бы накавырял что нибудь
Никакого кода нет. Делал всё через regedit.
http://www.hardline.ru/1/5/1534/
Так и не нашел способ, как это сделать
Но имхо если админ может себе вернуть нужные права на реестр, то и твою поделку тоже найдет.
я хочу сделать программу,которая будет работать как служба все время,только при закрытии ее можно изменить данные,а во время работы нет
Такую программку всё равно придётся писать, с ней должна общаться DLL.
может кто направит на правильном путь,гдк что и как капать,проблема с реестром,не могу найти унфу на запрет изменения ключа,на файлы я код уже писал работает!
Легче уж написать DLL,которая через AppInitDLL будет внедряться во все процессы и перехватывать
Алгоритм работы такой программы мог бы быть такой:
1. При загрузке считываем нужные значения ключей реестра, и сохранчяем их. Априори они правильные
2. Ставим уведомление (см. описание функции по ссылке)
3. Ждем срабатывания уведомлегний
4. Когда дождались - читаем текущее значение нужного ключа и если оно не то, каким должно быть, сами меняем его...
Вкратце так. Вы же не будете писать драйвер для перехвата обращений к реестру (хотя это было бы предпочтительнее). На ВАСМе когда-то видел исходники RegMon/FileMon ... Достаточно интересная тема
В пользовательском режиме возможности достаточно огрничены, но при некоторой усидчивости можно получить нужное