last day (15 days later) » 

3:31 PM
Попутно расскажу что делал
Первый класс: RegistryUtils.RegistryMonitor -> codeproject.com/Articles/4502/… найти его можно здесь.. Изменил его так:
private void ThreadLoop()
{
IntPtr registryKey;
int result = RegOpenKeyEx(
_registryHive,
_registrySubName, 0,
STANDARD_RIGHTS_READ |
KEY_QUERY_VALUE |
KEY_NOTIFY,
out registryKey);

if (result != 0)
throw new Win32Exception(result);

try
{
var _eventNotify = new AutoResetEvent(false);
var waitHandles = new WaitHandle[] { _eventNotify, _eventTerminate };
while (!_eventTerminate.WaitOne(0, true))
{
result = RegNotifyChangeKeyValue(registryKey, true, _regFilter, _eventNotify.SafeWaitHandle.DangerousGetHandle(), true);
 
Но.... зачем это всё? Для кого?
 
Я хочу сделать мониторинг реестра, чекать изменение в нужных мне областях и исправлять если изменились какие-нибудь записи..
Теперь сам мониторинг:
static List<string> RegScan = new List<string>()
{
@"HKEY_CLASSES_ROOT\exefile\shell\runas\command",
@"HKEY_CLASSES_ROOT\zapfile\shell\open\command",
@"HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.exe",
@"HKEY_CLASSES_ROOT\.exe",
@"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot",
@"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control",
@"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services",
@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options",
@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon",
 
для кого это всё?
 
Для себя..
 
окей. зачем чат?
 
3:35 PM
А куда?
Единственная проблема в том что при удаление какого либо параметра в реестре, он чекает OnRegistryChanged и пишет что "Зафиксировано изменение в реестре"
Вызываю так: из Main() Task.Factory.StartNew(() => class.StartRegistryMonitor());
 
4:00 PM
Буду ожидать вашего способа решения этой проблемы.
 
 
4 hours later…
8:28 PM
Нашёл источник проблемы
А именно в ветках: HKEY_CURRENT_USER
из-за них мониторинг чекает везде, почему так?
 

last day (15 days later) »