Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Защита реестра от изменения

81K
14 июня 2012 года
O L E G
14 / / 14.06.2012
Помогите написать код на MVС++ ,который бы открывал реестр на чтение и не давал изменению данных.
ну к примеру для ветви HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer\NoDrives
Для файлов код я написал
Код:
#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;
}
но на реестр не чего подобного придумать не могу,помогите добрые люди
414
14 июня 2012 года
CassandraDied
763 / / 24.05.2012
Может, лучше посмотреть в сторону политик?
Вот ещё интересную статейку нашёл.
Можно ещё вот в эту сторону глянуть.
81K
14 июня 2012 года
O L E G
14 / / 14.06.2012
последний вариант более интересный, на примере сможешь мне его сформулировать?на примере какого нибудь ключа?
414
14 июня 2012 года
CassandraDied
763 / / 24.05.2012
Use Google, Luke.
Сейчас - нет, ночью - смогу.
81K
14 июня 2012 года
O L E G
14 / / 14.06.2012
буду благодарен,конечно я подожду
414
14 июня 2012 года
CassandraDied
763 / / 24.05.2012
Хотя трояк по ОСРВ мне и так поставят, так что можно и сейчас поискать.
81K
14 июня 2012 года
O L E G
14 / / 14.06.2012
Только по тести его,не забудь мне нужно только чтение с данной ветви,запись какие либо изменения что бы блокировались
414
14 июня 2012 года
CassandraDied
763 / / 24.05.2012
Этот вариант тебе не подойдёт. Сейчас потестил и, даже с запретом на редактирование\удаление, ничего не мешает просто добавить новые права, в которых это будет разрешено, даже, если перед этим стояли права для "всех" только на чтение. Видимо, полной защиты никак не получить.
81K
14 июня 2012 года
O L E G
14 / / 14.06.2012
а может такой вариант что бы скрипт работал постоянно,то есть если какие то изменения он сразу же менял значение на указанное
81K
14 июня 2012 года
O L E G
14 / / 14.06.2012
что бы скрипт весел в памяти и посстоянно работал
414
14 июня 2012 года
CassandraDied
763 / / 24.05.2012
Да, но это уже не имеет никакого отношения к реестру и задача более сложная, чем просто поменять права.
81K
14 июня 2012 года
O L E G
14 / / 14.06.2012
права легко изменить назад под админом,а вот скрипт надо убить что бы изменить,вот в чем дело
81K
14 июня 2012 года
O L E G
14 / / 14.06.2012
из под WBS легко это все меняется
 
Код:
wsh.Run("""subinacl"" /subkeyreg ""HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies"" /grant=%username%=f /setowner=%username%"), 0 ,True
414
14 июня 2012 года
CassandraDied
763 / / 24.05.2012
На счёт именно скрипта - не уверен. Да и не хорошо это скриптом делать.
Можно написать dl и подгружать её во все процессы, она-то и будет мониторить обращение к ключам.
81K
14 июня 2012 года
O L E G
14 / / 14.06.2012
Скинь код то что ты пробовал я хоть на примере посмотрю,что да как делается)
81K
14 июня 2012 года
O L E G
14 / / 14.06.2012
на словах интересно,но умел бы я это сделать уже бы накавырял что нибудь
414
14 июня 2012 года
CassandraDied
763 / / 24.05.2012
Никакого кода нет. Делал всё через regedit.
81K
14 июня 2012 года
O L E G
14 / / 14.06.2012
http://www.hardline.ru/1/5/1534/
81K
18 июня 2012 года
O L E G
14 / / 14.06.2012
Так и не нашел способ, как это сделать
277
18 июня 2012 года
arrjj
1.7K / / 26.01.2011
гугли "appinit_dlls" и "Image File Execution Options". Так работает в основном вирусня :D А антивирусники ставят свой драйвер, в котором перехватывают системные вызовы обращения к файлам и реестру.

Но имхо если админ может себе вернуть нужные права на реестр, то и твою поделку тоже найдет.
81K
19 июня 2012 года
O L E G
14 / / 14.06.2012
я хочу сделать программу,которая будет работать как служба все время,только при закрытии ее можно изменить данные,а во время работы нет
414
19 июня 2012 года
CassandraDied
763 / / 24.05.2012
Такую программку всё равно придётся писать, с ней должна общаться DLL.
81K
19 июня 2012 года
O L E G
14 / / 14.06.2012
может кто направит на правильном путь,гдк что и как капать,проблема с реестром,не могу найти унфу на запрет изменения ключа,на файлы я код уже писал работает!
7
19 июня 2012 года
@pixo $oft
3.4K / / 20.09.2006
Легче уж написать DLL,которая через AppInitDLL будет внедряться во все процессы и перехватывать
65K
24 июня 2012 года
verholom
48 / / 29.08.2011
Я бы посмотрел в сторону функции RegNotifyChangeKeyValue

Алгоритм работы такой программы мог бы быть такой:
1. При загрузке считываем нужные значения ключей реестра, и сохранчяем их. Априори они правильные
2. Ставим уведомление (см. описание функции по ссылке)
3. Ждем срабатывания уведомлегний
4. Когда дождались - читаем текущее значение нужного ключа и если оно не то, каким должно быть, сами меняем его...

Вкратце так. Вы же не будете писать драйвер для перехвата обращений к реестру (хотя это было бы предпочтительнее). На ВАСМе когда-то видел исходники RegMon/FileMon ... Достаточно интересная тема

В пользовательском режиме возможности достаточно огрничены, но при некоторой усидчивости можно получить нужное

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог