Работа с реестром
C именованием методов цинка наблюдается путаница. Внесем некоторую ясность.
Папки в левой панели редактора реестра regedit - разделы (или ветки 'branches').
Методы mdm.System.Registry.createKey, .getKeyNames и .deleteKey воздействуют именно на разделы.
Далее, в правой панели regedit'a отображаются ключи: название, тип, значение, которые в данном разделе присутствуют.
на пример
Код:
var login:String = mdm.System.Registry.loadString("3", "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon", "DefaultUserName");
в качестве последнего аргумента принимает имя ключа в данном разделе, а возвращает его значение.
То же относится и к .saveString(), который принимает аргументами ветку, имя ключа, значение.
С удалением раздела (ветки) нет проблем. Но вот с удалением ключа или его значения - непонтно.
Метод deleteValue() не работает. Да и принимает он, судя по мануалу просто ветку, имя ключа туда не вставляется.
Видимо, это косяк. Здесь
http://www.mdmforum.com/forum/index....hl=deletevalue
изложена пара достойных идей как этот косяк спрямить.
В частности, осбого внимания заслуживает использование утилиты редактирования реестра из командной строки REG DELETE.
Код:
var cmdExe = "REG DELETE раздел /v ключ";
var results = mdm.System.execStdOut(cmdExe);
mdm.Dialogs.prompt(results);
Для получения справки по утилите запустите cmd и набейте reg delete /? или reg query /?
Да, еще. Методы .load() и .save() облегченный вариант всех прочих. В том смысле , что они воздействуют на определенную ветку в реестре, и ее не надо им указывать, ветка эта формируется при первом вызове .save(), точное ее местоположение огрворено в мануале: HKEY_CURRENT_USER\Software\<название формы приложения>\ .
пример
Код:
go.onRelease = function() {
mdm.System.Registry.save("myKey", "This is my Content");// записали в ключ 'myKey' значение 'This is my Content'
var Result = mdm.System.Registry.load("MyKey");// считали только что записанное значение
mdm.Dialogs.prompt(Result);
};
Как упоминалось в примерах по VBScript, этот инструмент можно так же использовать для работы с реестром, т.к.
возможности vb-скрипта это позволяют.
А вот так можно получить имя текущего пользователя и домена на WinXP
Код:
var login:String = mdm.System.Registry.loadString("3", "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon", "DefaultUserName");
var domain:String = mdm.System.Registry.loadString("3", "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon", "DefaultDomainName");
// for winXP registry
Однако такой способ не сработает, если выполнена команда "Запуск от имени...", считаются все равно имя и домен именно текущего пользователя.
Для корректной работы лучше использовать WSH-скрипт.
Код:
// "голый" WSH-скрипт для работы с реестром может выглядеть так
Set Sh = CreateObject("WScript.Shell")
key = "HKEY_CURRENT_USER\"
Sh.RegWrite key & "WSHTest\", "testkeydefault"
См. выше примеры.