Мониторинг ветки реестра - C#
Формулировка задачи:
Есть ветка HKEY_LOCAL_MACHINE\SOFTWARE\Task_Queue\Parameters\Task_Execution_Duration
Что нужно написать, чтоб програма после запуска и до своего закрытия следила за етой веткой и как только там появлялся новый параметр что-то предпринимала. Если параметр сринговый с именем TASK_XXXX и содержит хххх (где х = 0-9), то писала в журнал "параметр TASK_XXXX " принят. А если нет, то "TASK_XXXX отклонен". Собственно, как вытащить значение из параметра я знаю, и как записать в журнал. А вот как следить за веткой и вытаскивать имена НОВЫХ параметров, что появились после запуска, да и как проверить правильность названия- вот с етим беда.
Решение задачи: «Мониторинг ветки реестра»
textual
Листинг программы
using Microsoft.Win32;
using System.Text.RegularExpressions;
...
List<string> values = new List<string>();
RegistryKey lmKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE", false);
RegistryKey rkey = lmKey.OpenSubKey(@"Task_Queue\Parameters\Task_Execution_Duration", false);
...
Regex regEx = new Regex("TASK_[0-9]+$");
foreach (string val in rkey.GetValueNames())
{
if (rkey.GetValueKind(val) == RegistryValueKind.String)
{
Match match = regEx.Match(val);
if (match.Success)
{
if (!values.Contains(val))
{
values.Add(val);
MessageBox.Show("Added");
}
}
}
}