View previous topic :: View next topic |
Author |
Message |
Loopback
Joined: 07 Sep 2009 Posts: 1316
|
(Separately) Posted: Mon Dec 24, 2012 22:00 Post subject: |
|
|
KopBuH wrote: | вот если бы была поддержка чтения из WMI |
Не, внутреннюю поддержку этого я делать не буду.
Хотя, если модифицировать идею MVV без использования ini, можно попробовать сделать захват стандартного вывода запускаемой программы. Тогда, если сделать скрипт или экзешник, выводящие информацию в stdout, ее можно будет получать сразу в скрипте. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
|
Back to top |
|
|
KopBuH
Joined: 02 Jul 2010 Posts: 127 Location: Tashkent, Uzbekistan
|
(Separately) Posted: Wed Dec 26, 2012 20:40 Post subject: |
|
|
ждем функцию RegRead.
чтобы можно было выставлять тип значения - REG_DWORD REG_SZ и т.п.
например, так:
Code: | RegRead AutorunKey "HKLM\Software\TC_Autorun" "sz" "AutorunKey" "Autorun" |
отсюда: переменная, путь ключа в реестре, тип значения, имя значения, значение по умолчанию. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Wed Dec 26, 2012 22:20 Post subject: |
|
|
Зачем указывать тип? Строка всегда будет возвращаться в виде строки (ololo), число - тоже в виде строки (4660 или $1234), зачем тут тип указывать? Переменные всё равно в плагине бывают только строковые, а тип параметра прекрасно возвращает функция RegQueryValueEx.
Нужны только имя переменной, адрес ключа и имя значения, ну и значение по умолчанию. В качестве параметра вижу уточнение, в какой системе возвращать число - в десятеричной или шестнадцатеричной.
Code: | RegRead [/HEX] <имя_переменной> <адрес_ключа> <имя_значения> [<текст_по_умолчанию>]
|
Параметр /HEX - чтобы возвращать число в виде $1234, а не в виде 4660, на строки влиять вообще не должен. Если вместо имени ключа заданы пустые кавычки, читать значение (По умолчанию) - впрочем, это даже реализовывать не нужно, RegQueryValueEx и так прочитает значение по умолчанию, если указано пустое имя значения. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1316
|
(Separately) Posted: Thu Dec 27, 2012 11:49 Post subject: |
|
|
По поводу RegRead согласен с MVV, указание типа при чтении - излишне. Да и по остальной логике возражений нет, как-то так и я себе ее представлял.
MVV wrote: | такой функции самое место в отдельном плагине. |
В этом случае в плагине придется по-сути повторять функционал ShellExec. Есть ли смысл? Можно просто опционально добавить чтение потока сразу после запуска в переменную. Должно уместиться в десяток строк кода.
Нет, лучше действительно в плагин. Практически все ключи ShellExec неприменимы, а сопутствующего кода оказалось больше (перекодировка). |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1316
|
(Separately) Posted: Fri Dec 28, 2012 18:22 Post subject: |
|
|
Одиннадцатая бета.
Скачать
Изменения:
Code: |
+ команда ProcessExecGetOutput в плагине Process
+ команда RegRead
|
Вообще процесс развития - он бесконечен, поэтому, если ничего не выплывает критического, я бы хотел сделать релиз.
Flasher
По поводу дефолтных значений ini. Я не смог повторить проблему. Сейчас логика такая: заданное дефолтное значение используется в случае, если ключ отсутствует в ini. Если ключ есть - используется его значение, в том числе пустое. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Dec 28, 2012 18:37 Post subject: |
|
|
Loopback
Т.е. такой код у тебя работает?
Новую пока не качал.. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1316
|
(Separately) Posted: Fri Dec 28, 2012 20:43 Post subject: |
|
|
Flasher
А, нашел, спасибо за наводку. Это не в IniRead ошибка была, а с операторами and/or, которые обрабатывались регистрозависимо.
Версию обновил по той же ссылке. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Dec 29, 2012 13:41 Post subject: |
|
|
Loopback
Сейчас порядок. Можно релизить. Отдельное мерси за RegRead, начинаю уже прикручивать.
Про stdout пока не думал. Есть какие-то идеи? Что там из полезного окромя cmd у нас выводит? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
KopBuH
Joined: 02 Jul 2010 Posts: 127 Location: Tashkent, Uzbekistan
|
(Separately) Posted: Sat Dec 29, 2012 14:41 Post subject: |
|
|
Loopback
вроде сделал проверку локализации ОС:
Code: | # Проверка локализации (языка) ОС
RegRead COMMANDER_OSLANG "HKCU\Control Panel\International" "Locale" "unknown"
# Проверка версии ОС
If %COMMANDER_OSLANG% = 00000419 Then
SetEnv COMMANDER_OSLANG "Rus"
ElseIf %COMMANDER_OSLANG% = 00000409 Then
SetEnv COMMANDER_OSLANG "Eng"
Else
SetEnv COMMANDER_OSLANG "%COMMANDER_OSLANG%"
EndIf |
в принципе, всё работает, спасибо.
но иногда почему то вылазиют странные сообщения плагина при выходе из ТС.
причем не всегда .
и еще:
является ли такой код правильным: (переменная "%ShowHiddensOnStart%" и "%COMMANDER_ASADMIN%" уже создана)
Старый код: (10-ая бета)
Code: | If %ShowHiddensOnStart% = 0 Then
ElseIf %COMMANDER_ASADMIN% = 1 Then
ShellExec /EV "%COMMANDER_PATH%\Macroses\nircmd%COMMANDER_ARCH%.exe" "win show class TTOTAL_CMD"
Else
EndIf |
Новый код: (11-ая бета)
Code: | If %ShowHiddensOnStart% = 0 Then
ElseIf %COMMANDER_ASADMIN% = 1 Then
ShellExec /EV "%COMMANDER_PATH%\Macroses\nircmd%COMMANDER_ARCH%.exe" "win show class TTOTAL_CMD"
EndIf |
как видите, там я удалил строку else, поскольку ничего выполнять не нужно. вроде пока проблем не наблюдаю. или else всё же должна быть?. (сообщения об ошибках исчезли вроде именно после того, как я везде убрал эту else. но в 10-ой бетке такого не наблюдалось )
P.S.: Loopback, добавил бы в autorun.example.cfg пару примеров работы с RegRead |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1316
|
(Separately) Posted: Sun Dec 30, 2012 20:02 Post subject: |
|
|
Flasher wrote: | Про stdout пока не думал. Есть какие-то идеи? Что там из полезного окромя cmd у нас выводит? |
В первую очередь - cscript. Для меня - Autoit, конечно.
Ну вот, например, очень специфический запрос KopBuH по получению SID. Теперь его можно вытащить скриптом через WMI. Скрипт (get_sid.vbs):
Code: |
On Error Resume Next
Set strUserName = ""
Set WshShell = WScript.CreateObject( "WScript.Shell" )
Set WshSysEnv = WshShell.Environment( "PROCESS" )
strUserName = WshSysEnv( "USERNAME" )
Set objWMIService = GetObject( "winmgmts://./root/CIMV2" )
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_UserAccount", "WQL", &h30)
For Each objItem In colItems
If LCase( objItem.Name ) = LCase( strUserName ) Then
WScript.Stdout.Write objItem.SID
End If
Next
|
Строка запуска в Autorun:
Code: |
ProcessExecGetOutput SID cscript.exe "//Nologo get_sid.vbs"
SetEnv /EV USER_SID %SID%
|
KopBuH wrote: | но иногда почему то вылазиют странные сообщения плагина при выходе из ТС. причем не всегда |
Странно, не наблюдал ничего такого странного.
KopBuH wrote: | является ли такой код правильным: |
Можно в любой комбинации, минимально If..Endif.
Тут возникает другой вопрос - а зачем нужно условие%ShowHiddensOnStart% = 0, если оно ничего не делает.
KopBuH wrote: | P.S.: Loopback, добавил бы в autorun.example.cfg пару примеров работы с RegRead |
Есть идеи? Нужно что-то применимое для многих. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Dec 30, 2012 20:13 Post subject: |
|
|
Loopback wrote: | В первую очередь - cscript. Для меня - Autoit, конечно. | Я не думаю, что вообще есть смысл использовать скрипты для вывода потока, чтобы получить какое-то значение, записываемое в переменную среды, которое потом тем же скриптингом и будет обрабатываться. В этом нет практического смысла, на мой взгяд (если не брать какие-то совсем простые операции типа создания одноимённых папок и т.п.). Или, может, я чего не улавливаю? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1316
|
(Separately) Posted: Sun Dec 30, 2012 20:21 Post subject: |
|
|
Flasher wrote: | Или, может, я чего не улавливаю? |
Скрипт может менять унаследованную переменную окружения, но в родительском процессе эти изменения не отразятся. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Dec 30, 2012 20:30 Post subject: |
|
|
Loopback
Какой процесс в данном случае понимается под родительским, и какие изменения должны на нём отражаться? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1316
|
(Separately) Posted: Sun Dec 30, 2012 21:09 Post subject: |
|
|
Flasher
Родительский процесс - Тотал с загруженным Autorun. Переменная окружения, созданная в Autorun, будет видна во внешнем (запускаемом из Autorun) скрипте, но не может быть им изменена. Созданная во внешнем скрипте переменная вообще не будет видна в скрипте Autorun (и в ТС).
Так что передача через stdout, на мой взгляд, самый простой и удобный способ передать информацию в Autorun. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|