Форум: "WinAPI";
Текущий архив: 2016.02.14;
Скачать: [xml.tar.bz2];
ВнизКак отследить изменения в определенной ветке реестра? Найти похожие ветки
← →
apic (2010-06-07 10:48) [0]Как отследить изменения в определенной ветке реестра? Внешнии компоненты не предлагать и не говорить, что есть много готовых программ, готовые программы мне не нужны. Заранее спасибо! Очень буду благодарен за пример исходного кода.
← →
Игорь Шевченко © (2010-06-07 12:38) [1]RegNotifyChangeKeyValue
← →
apic (2010-06-07 15:05) [2]Я знаю, что RegNotifyChangeKeyValue, а как все это реализовать?
← →
MBo © (2010-06-07 15:14) [3]а разве MSDN не поможет?
← →
Anatoly Podgoretsky © (2010-06-07 15:15) [4]> apic (07.06.2010 15:05:02) [2]
Ну я бы для начала попробывал посмотреть в справке, и потом бы задал
конкретный вопрос.
В справке хорошо описаны параметры функции.
← →
Игорь Шевченко © (2010-06-07 16:37) [5]
> а как все это реализовать?
программу написать
← →
DVM © (2010-06-07 20:56) [6]
> apic
Тут http://wasm.ru/baixado.php?mode=tool&id=283 исходники старой версии RegMon Руссиновича. Бери, ковыряй.
← →
apic (2010-06-08 10:56) [7]DVM, спасибо хоть за это!
← →
apic (2010-06-09 05:57) [8]Короче вот этот исходник с МСДН во всей сети и вжурналя хакер и во всей других периодических изданиях:
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
//void main(int argc, char *argv[])
void __cdecl _tmain(int argc, TCHAR *argv[])
{
DWORD dwFilter = REG_NOTIFY_CHANGE_NAME |
REG_NOTIFY_CHANGE_ATTRIBUTES |
REG_NOTIFY_CHANGE_LAST_SET |
REG_NOTIFY_CHANGE_SECURITY;
HANDLE hEvent;
HKEY hMainKey;
HKEY hKey;
LONG lErrorCode;
// Display the usage error message.
if (argc != 3)
{
_tprintf(TEXT("Usage: notify [HKLM|HKU|HKCU|HKCR|HCC] [<subkey>]\n"));
return;
}
// Convert parameters to appropriate handles.
if (_tcscmp(TEXT("HKLM"), argv[1]) == 0) hMainKey=HKEY_LOCAL_MACHINE;
else if(_tcscmp(TEXT("HKU"), argv[1]) == 0) hMainKey=HKEY_USERS;
else if(_tcscmp(TEXT("HKCU"), argv[1]) == 0) hMainKey=HKEY_CURRENT_USER;
else if(_tcscmp(TEXT("HKCR"), argv[1]) == 0) hMainKey=HKEY_CLASSES_ROOT;
else if(_tcscmp(TEXT("HCC"), argv[1]) == 0) hMainKey=HKEY_CURRENT_CONFIG;
else
{
_tprintf(TEXT("Usage: notify [HKLM|HKU|HKCU|HKCR|HCC] [<subkey>]\n"));
return;
}
// Open a key.
lErrorCode = RegOpenKeyEx(hMainKey, argv[2], 0, KEY_NOTIFY, &hKey);
if (lErrorCode != ERROR_SUCCESS)
{
_tprintf(TEXT("Error in RegOpenKeyEx (%d).\n"), lErrorCode);
return;
}
// Create an event.
hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
if (hEvent == NULL)
{
_tprintf(TEXT("Error in CreateEvent (%d).\n"), GetLastError());
return;
}
// Watch the registry key for a change of value.
lErrorCode = RegNotifyChangeKeyValue(hKey,
TRUE,
dwFilter,
hEvent,
TRUE);
if (lErrorCode != ERROR_SUCCESS)
{
_tprintf(TEXT("Error in RegNotifyChangeKeyValue (%d).\n"), lErrorCode);
return;
}
// Wait for an event to occur.
_tprintf(TEXT("Waiting for a change in the specified key...\n"));
if (WaitForSingleObject(hEvent, INFINITE) == WAIT_FAILED)
{
_tprintf(TEXT("Error in WaitForSingleObject (%d).\n"), GetLastError());
return;
}
else _tprintf(TEXT("\nChange has occurred.\n"));
// Close the key.
lErrorCode = RegCloseKey(hKey);
if (lErrorCode != ERROR_SUCCESS)
{
_tprintf(TEXT("Error in RegCloseKey (%d).\n"), GetLastError());
return;
}
// Close the handle.
if (!CloseHandle(hEvent))
{
_tprintf(TEXT("Error in CloseHandle.\n"));
return;
}
}
Но он меня БЕСИТ!!! Ну переделал я его на Делфи и чЁЁЁЁЁЁЁЁ?
Все это дело нужно во первых запускать в отдельном потоке, а во вторых как это все б...я, остановить, может я хочу прекратить следить за реестром, или сменить ветку слежения. Пытаюсь завершить поток, у меня тупо звисает главня форма приложения, а эта скотина всеравно продолжает следить за изменениями, это что впринципе не решимая задача, что ли?
← →
MBo © (2010-06-09 06:15) [9]>Но он меня БЕСИТ!!!
А ведь пора начать думать. Поток ждет на функции бесконечного ожидания.
Таймаут ей назначить или заменить на WaitForMultipleObjects
← →
apic (2010-06-09 10:18) [10]MBo спасиб, попробую! Я например вообще не знал о существовании WaitForMultipleObjects, да и как ими правильно пользываться я без понятия, где же в наше время найдешь нормальное описание API на русском?
← →
Игорь Шевченко © (2010-06-09 10:59) [11]apic (09.06.10 10:18) [10]
Учи английский, заплати переводчику, в чем проблема ?
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2016.02.14;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.001 c