Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Регфайл, синтаксис.
Показать сообщение отдельно

Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Оказывается наполовину работает! Вообщем такое срабатывает /val "New Value #1"
Проблемма возникает при перечислении: /val "New Value #1","New Value #2", даже если один из параметров не имеет пробелов.
Причём, точки /val: можно не указывать, как я заметил.
Ну и всякие трансцендентальные типы REG_DWORD_BIG_ENDIAN скрипт не пережёвывает, впрочем это хорошо.

хух! нашёл "недокументированные возможности", можно так вбивать:
/val "New Value #2,New Value #1" — это валидно для работы RegSave* скрипта!

---
(!) есть небольшое различие в hex(7): записи пустых параметров.
regedit.exe "ExcludeFromKnownDlls"=hex(7):00,00
regsave.exe "ExcludeFromKnownDlls"=hex(7):00,00,00,00

--- я добавил вывод в консоль, для приличия похоже, что логично работает...
Код: Выделить весь код
Global $aParms = StringRegexp($CmdLineRaw, '/(\w+)(?:[\s:]+(?:"([^"]+)"|([^\s/"]+)))?', 4)
If @error Then
ConsoleWrite("2001-2005 GmbH, Semiono. Coded by Amel27." & @CRLF & @CRLF)
ConsoleWrite(" //xregs.exe synops: ..." & @CRLF & @CRLF)
ConsoleWrite(@TAB & '{/val: "value1,value2,value3,etc."}|{/val:*}|{/add}...' & @CRLF)
ConsoleWrite(@TAB & '{/key: "[HKCR,HKCU,HKLM,HKU,HKCC]\Subkey"}' & @CRLF)
ConsoleWrite(@TAB & '{/reg: "[Drive:]\PATH\File.reg"}' & @CRLF) ; /out я переделал в $REG
	Exit -1 ; Ошибка: не указано ни одного параметра
EndIf

For $aParm In $aParms
    If UBound($aParm)=2 Then Assign($aParm[1], True)
    If UBound($aParm)>2 Then Assign($aParm[1], $aParm[UBound($aParm)-1])
Next

Global $iMode=8+2
If $add Then $iMode = 1

If $val=="*" Then $val = _RegEnumVals($key)
_RegValSave($reg, $key, $val, $iMode)

If @error = 1 Then
ConsoleWrite(@CRLF & "2001-2005 GmbH, Semiono. Coded by Amel27." & @CRLF)
ConsoleWrite("Failed! ..." & @CRLF)
	Exit @error ; ошибки выполнения _RegValSave()
EndIf

If @error = 0 Then 
ConsoleWrite(@CRLF & "2001-2005 GmbH, Semiono. Coded by Amel27." & @CRLF)
ConsoleWrite("Success! ..." & @CRLF)
EndIf
----

А почему Func _RegValSave($file, $key, $vals = "", $mode = 42) не даёт юникод файл?
Или это от BitAND() операций ещё зависит в данном скрипте?

----
Я ещё кое что на-бета тестил...
Вот проблемма:
[HKEY_LOCAL_MACHINE\Software\Classes\WinRAR\shell\open\command]
"@"="C:\I\Apps\WinRAR\WinRAR.exe "%1""

Должно быть:
[HKEY_LOCAL_MACHINE\Software\Classes\WinRAR\shell\open\command]
@="C:\\I\\Apps\\WinRAR\\WinRAR.exe \"%1\""

И ещё очень не хватает опции сохранения всех субключей...
Я попытался запустить без /val: свитчера, чтобы сохранить следущее:
xregs.exe /key: "HKLM\Software\Classes\.rar" /reg: "c:\file.reg"
xregs.exe /key: "HKLM\Software\Classes\WinRAR\DefaultIcon" /reg: "c:\file.reg" /add
xregs.exe /key: "HKLM\Software\Classes\WinRAR\shell\open\command" /reg: "c:\file.reg" /add
Но они затирают по-моему друг друга. Вообщем что-то там непонятное было...

Мне пришла идея! Может лучше зделать другие разделители для коммандной строки?
Чтобы вообще это не противоречило скрипту, и чтоб не надо было экранировать.

Ещё одна косметичиская фишка если не трудно, надо чтобы при /add не добавлялись @CRLF & @CLRF
перед каждым субкейем, но это я сам виноват, я к концу регфайла же дописал & @CLRF,
правда в конце файла это уместно.

-------
Полезное сообщение


Последний раз редактировалось semiono, 26-01-2010 в 07:12.


Отправлено: 04:40, 25-01-2010 | #29

Название темы: Регфайл, синтаксис.