У меня есть такой список:
l = [['a', 'b', 'c'], ['a', 'b'], ['g', 'h', 'r', 'w']]
Я хочу выбрать элемент из каждого списка и объединить их, чтобы строка.
Например: 'aag', 'aah', 'aar', 'aaw', 'abg', 'abh' ....
Однако длина списка l и длина каждого внутреннего списка неизвестны до запуска программы. Пока что я безуспешно пробовал это через WMI: var query = new WqlEventQuery (string.Format ( «SELECT * FROM ...
Мне нужно уведомление, когда изменяется конкретный ключ реестра в HKEY_CURRENT_USER
.
До сих пор я пробовал это через WMI
безуспешно:
var query = new WqlEventQuery(string.Format(
"SELECT * FROM RegistryKeyChangeEvent WHERE Hive='{0}' AND KeyPath='{1}' AND ValueName='{2}'",
hive, keyPath.Replace("\\","\\\\"), valueName));
_watcher = new ManagementEventWatcher(query);
_watcher.Scope.Path.NamespacePath = @"root\default";
_watcher.EventArrived += (sender, args) => KeyValueChanged();
_watcher.Start();
(Ошибка была «не найдена»)
Мой второй подход заключался в использовании компонента сценария WBEM
с намерением для переноса примера из http://msdn.microsoft.com/en-us/library/aa393042 (VS.85) .aspx на C #, но я не нашел никаких примеров использования WBEM COM в C #
я нашел этот класс http://www.codeproject.com/KB/system/registrymonitor.aspx , но он не соответствовал моим потребностям, поскольку этот класс только контролирует весь ключ и Мне нужно только уведомление, когда изменяется конкретное значение (указанное через ValueName
в примерах выше).
EDIT:
Если вы измените Hive на HKEY_CURRENT_USER
в примере msdn vbscript, он перестанет работать. Я не смог найти ничего об этом поведении, кроме ссылки из 2003 г.
EDIT2:
Изменения в кустах HKEY_CLASSES_ROOT
и HKEY_CURRENT_USER
не поддерживаются RegistryEvent
или производными от него классами, такими как RegistryValueChange4Event]. ( MSDN )