Перестановки списка списков

У меня есть такой список:

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 )

7
задан svick 11 September 2012 в 22:23
поделиться