nikzzzz
- Стаж: 9 лет 9 месяцев
- Сообщений: 3114
- Репутация:127[+] [-]
|
Ander_73 Ждет, результат можно проверить по %errorlevel% .
|
Ander_73
- Стаж: 7 лет 9 месяцев
- Сообщений: 3810
- Репутация:127[+] [-]
|
Как под Win7 получить список содержимого ESD-архива? "Родной" DISM не поддерживает такой формат. Есть замечательная утилита wimlib, но она не понимает русские буквы в тэгах... После вдумчивого гугленья получен VBS-скрипт (назовём его xml_parser.vbs):Set oXML = CreateObject("Msxml2.DOMDocument") oXML.Load(WScript.Arguments(0)) Set nodes = oXML.getElementsByTagName(WScript.Arguments(1)) For Each node In nodes WScript.Echo node.text Next И теперь можно так::: получаем из ESD-архива (%file%) содержимое файла-описания в файл xml wimlib-imagex.exe info "%file%" --extract-xml xml :: получаем список тэгов <NAME> и записываем в файл list.txt в кодировке 1251 (для WSelect) for /f "delims=" %%i in ('cscript.exe //nologo xml_parser.vbs xml NAME') do call :getitem >nul chcp 866 exit :getitem if not defined cp >nul chcp 1251& set cp=1 :: трюк с передачей параметра через внутреннюю переменную; позволяет вывести _любые_ символы, в т.ч. кавычки и спец-символы for %%a in (1) do >>list.txt echo %%i *Примечание:- работает также с WIM и SWM (всё, что поддерживает wimlib)
- вывести можно список любых тэгов, а не только <NAME>
- требуется поддержка vbs (применение под WinPE ограничено)
|
Отправлено: 13-Июл-2019 17:10
(спустя 1 месяц 15 дней)
MinskHard
- Стаж: 7 лет 3 месяца
- Сообщений: 7
- Репутация:-1[+] [-]
|
Уважаемые"Гуру" помню где-то видел обсуждали но найти не могу. В шапке есть батник для запуска программы из искомой папки. Код отрабатывает на ура, папку ищет и необходимый exe-ник запускает вот только окно консоли висит пока не закроешь эту программу или саму консоль. Дописывал в конец кода :end, exit ничего не помогает, подскажите пожалуйста, или тыкните носом где обсуждали это !
|
vovan1982
- Стаж: 9 лет 9 месяцев
- Сообщений: 1129
- Репутация:76[+] [-]
- Откуда: Ростов-на-Дону
|
MinskHard, так вы параметр /w (ждать завершения выполнения) уберитеstart /w %PUH%\wind\setup64.cmd Нужно такstart %PUH%\wind\setup64.cmd
Последний раз редактировалось: vovan1982 (2019-07-13 22:52), всего редактировалось 1 раз
|
MinskHard
- Стаж: 7 лет 3 месяца
- Сообщений: 7
- Репутация:-1[+] [-]
|
Огромное спасибо, всё получилось !
|
Отправлено: 12-Фев-2021 15:48
(спустя 1 год 6 месяцев)
Ander_73
- Стаж: 7 лет 9 месяцев
- Сообщений: 3810
- Репутация:127[+] [-]
|
Интересный способ определить битность файла (exe или dll):@echo off for /f "tokens=3" %%a in ('2^>nul 7z.exe l -tpe %1^| find "CPU = "') do ^ if "%%a"=="x86" (echo App is a x86) else if "%%a"=="x64" echo App is a x64 Нужно: - установленный 7z (или прописанный в PATH) - запуск: run.cmd "file_name.exe"
Последний раз редактировалось: Ander_73 (2021-02-13 09:07), всего редактировалось 1 раз
|
Отправлено: 12-Фев-2021 17:50
(спустя 2 часа 2 минуты)
UserX
- Стаж: 9 лет 7 месяцев
- Сообщений: 852
- Репутация:37[+] [-]
|
83262Интересный способ определить битность файла (exe или dll): Чисто теоретически этот код допускает не увидеть никакого из двух сообщений - "App is a x86" или "App is a x64". Такое возможно практически?
|
Ander_73
- Стаж: 7 лет 9 месяцев
- Сообщений: 3810
- Репутация:127[+] [-]
|
UserX, только сейчас заметил, что да Если подсунуть батнику sfx-архив самого 7z. Обойти легко: добавить ключ -tpe
|
Отправлено: 18-Дек-2021 09:41
(спустя 3 месяца 9 дней)
loban_ser
- Стаж: 6 лет 9 месяцев
- Сообщений: 577
- Репутация:24[+] [-]
|
Нужно было как-то получить доступ к ветке реестра, написал батничек для смены владельца и получения прав для Администраторы / Пользователи / Systemreg_acces.bat@Echo off for /f "tokens=3" %%a in ( '2^>nul reg query "HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage" /v ACP' ) do >nul 2>&1 chcp %%a cd /d %~dp0 @(mshta "javascript:var s=clipboardData.getData('text');if(s)new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(s);close();"& echo.)>>"out.txt" for /f "tokens=1 delims=" %%a in (out.txt) do set "f=%%a" del /q /f "out.txt" set "reg=%f:~-3%" If Not Exist "%APPDATA%\Repozitory" md "%APPDATA%\Repozitory" rem Создание резервной копии прав на раздел SetACL.exe -on "%f%" -ignoreerr -ot reg -actn list -lst "w:o,d,s,g;f:sddl" -bckp "%APPDATA%\Repozitory\%reg:\=_%_quick_access_acl.bkp" -rec cont_obj rem Смена владельца раздела rem Получение прав полного доступа для текущего пользователя SetACL.exe -on "%f%" -ignoreerr -ot reg -actn setowner -ownr "n:S-1-5-32-544" -actn ace -ace "n:S-1-5-32-545;p:full" -ace "n:S-1-5-18;p:full" -rec cont_obj -actn clear -clr "dacl,sacl" -actn rstchldrn -rst "dacl,sacl" |find /i "SetACL finished successfully." If %errorlevel% LSS 1 ( %windir%\system32\cAu3.exe "MsgBox('64','Внимание!','Полными владельцами:' & @CRLF & '%f%' & @CRLF & 'установлены: Администраторы / Пользователи / System',10)" ) Exit Ну и восстановление правRestore_reg_acces.bat@Echo off for /f "tokens=3" %%a in ( '2^>nul reg query "HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage" /v ACP' ) do >nul 2>&1 chcp %%a cd /d "%~dp0" @(mshta "javascript:var s=clipboardData.getData('text');if(s)new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(s);close();"& echo.)>>"out.txt" for /f "tokens=1 delims=" %%a in (out.txt) do set "f=%%a" del /q /f "out.txt" set "reg=%f:~-3%" If Exist "%APPDATA%\Repozitory\%reg:\=_%_quick_access_acl.bkp" ( rem Восстановление владельца и прав из резервной копии SetACL.exe -on "%f%" -ignoreerr -ot reg -actn restore -bckp "%APPDATA%\Repozitory\%reg:\=_%_quick_access_acl.bkp" -rec cont_obj -silent SetACL.exe -on "%f%" -ot reg -actn setprot -op dacl:np -silent SetACL.exe -on "%f%" -ot reg -actn clear -clr dacl,sacl -silent If %errorlevel% LSS 1 ( %windir%\system32\cAu3.exe "MsgBox('64','Внимание!','Права на куст:' & @CRLF & '%f%' & @CRLF & 'Восстановлены!',10)" del /q /f "%APPDATA%\Repozitory\%reg:\=_%_quick_access_acl.bkp" ) ) Exit /B требует дополнительных утилит SetACL и cAu3-консольный autoit добавил в контекстное меню
regWindows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\Background\shell\reg_owner] "SubCommands"="reg_owner_act;reg_owner_rest" "MUIVerb"="Права ветки реестра" "Icon"="Regedit.exe,-0" "Position"="1" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\reg_owner_act] @="Смена владельца раздела" "HasLUAShield"="" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\reg_owner_act\command] @="mshta.exe vbscript:close(CreateObject(\"Shell.Application\").ShellExecute(\"cmd\",\"/c C:\\Windows\\System32\\reg_acces.bat\",\"\",\"runas\",0))" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\reg_owner_rest] @="Восстановление владельца и прав из резервной копии" "HasLUAShield"="" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\reg_owner_rest\command] @="mshta.exe vbscript:close(CreateObject(\"Shell.Application\").ShellExecute(\"cmd\",\"/c C:\\Windows\\System32\\Restore_reg_acces.bat\",\"\",\"runas\",0))"
|
Ander_73
- Стаж: 7 лет 9 месяцев
- Сообщений: 3810
- Репутация:127[+] [-]
|
loban_ser, зачем нужен cAu3? Используй тот же VBS. Всего-то надо вывести одно инфо-окно.
|
loban_ser
- Стаж: 6 лет 9 месяцев
- Сообщений: 577
- Репутация:24[+] [-]
|
Ander_73, Я привык уже к нему, он "облегчает жизнь" функционал расширен чем у cmd, по этому и пользую, а так-то конечно можноmshta vbscript:close(CreateObject("wscript.shell").Popup("test"^&vbCrLf^&"test",,"test",^&H20)) mshta vbscript:close(CreateObject("wscript.shell").Popup("Полными владельцами:"^&vbCrLf^&"%f%"^&vbCrLf^&"установлены: Администраторы / Пользователи / System",,"Внимание!",64)) mshta vbscript:close(CreateObject("wscript.shell").Popup("Права на куст:"^&vbCrLf^&"%f%"^&vbCrLf^&"Восстановлены!",,"Внимание!",64))
Последний раз редактировалось: loban_ser (2021-12-18 11:04), всего редактировалось 3 раз(а)
|
loban_ser
- Стаж: 6 лет 9 месяцев
- Сообщений: 577
- Репутация:24[+] [-]
|
@Echo off for /f "tokens=3" %%a in ( '2^>nul reg query "HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage" /v ACP' ) do >nul 2>&1 chcp %%a cd /d %~dp0 for /f "delims=" %%a in ( 'mshta "javascript:var s=clipboardData.getData('text');if(s)new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(s);close();"' ) do set "f=%%a" set "reg=%f:~-3%" 2>nul md "%APPDATA%\Repozitory" rem Создание резервной копии прав на раздел SetACL.exe -on "%f%" -ignoreerr -ot reg -actn list -lst "w:o,d,s,g;f:sddl" -bckp "%APPDATA%\Repozitory\%reg:\=_%_quick_access_acl.bkp" -rec cont_obj rem Смена владельца раздела rem Получение прав полного доступа для текущего пользователя SetACL.exe -on "%f%" -ignoreerr -ot reg -actn setowner -ownr "n:S-1-5-32-544" -actn ace -ace "n:S-1-5-32-545;p:full" -ace "n:S-1-5-18;p:full" -rec cont_obj -actn clear -clr "dacl,sacl" -actn rstchldrn -rst "dacl,sacl" |find /i "SetACL finished successfully." && mshta vbscript:close(CreateObject("wscript.shell").Popup("Полными владельцами:"^&vbCrLf^&"%f%"^&vbCrLf^&"установлены: Администраторы / Пользователи / System",,"Внимание!",64)) Exit @Echo off for /f "tokens=3" %%a in ( '2^>nul reg query "HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage" /v ACP' ) do >nul 2>&1 chcp %%a cd /d "%~dp0" for /f "delims=" %%a in ( 'mshta "javascript:var s=clipboardData.getData('text');if(s)new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(s);close();"' ) do set "f=%%a" set "reg=%f:~-3%" If Exist "%APPDATA%\Repozitory\%reg:\=_%_quick_access_acl.bkp" ( rem Восстановление владельца и прав из резервной копии SetACL.exe -on "%f%" -ignoreerr -ot reg -actn restore -bckp "%APPDATA%\Repozitory\%reg:\=_%_quick_access_acl.bkp" -rec cont_obj -silent SetACL.exe -on "%f%" -ot reg -actn setprot -op dacl:np -silent SetACL.exe -on "%f%" -ot reg -actn clear -clr dacl,sacl |find /i "SetACL finished successfully." && mshta vbscript:close^(CreateObject^("wscript.shell"^).Popup^("Права на куст:"^&vbCrLf^&"%f%"^&vbCrLf^&"Восстановлены!",,"Внимание!",64^)^) del /q /f "%APPDATA%\Repozitory\%reg:\=_%_quick_access_acl.bkp" ) Exit
|
Страница 6 из 8
Текущее время: 21-Ноя 13:33
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|