bighead
- Стаж: 3 года 1 месяц
- Сообщений: 402
- Репутация:24[+] [-]
|
rezorustavi, так батником никак, по крайней мере без костылей(мне не ведомых)), можно сделать бэкап экспортируя ветки реестры, но при восстановлении win10 сбросить настройки. AZJIO в теме пишетSetUserFTA = 1 - расширения добавляются с помощью утилиты SetUserFTA, которая идёт в комплекте. Автор заявляет что она прописывает хеш, необходимый для доверенной ассоциации. Утилита маленькая, попробуйте поработать с ней. Но тут же пишет, что прога может и без утилиты обойтись:CRCULM = 0 - не используется, но в будущем хотел добавить флаг определяющий в какой раздел прописывать данные, в HKCR (сейчас используемый) или HKCU (для текущего пользователя) или HKLM (для всех пользователей Спросите его о методах, может что подскажет) Мне самому интересно, но ничего путного не нашёл.
|
rezorustavi
- Стаж: 8 лет 11 месяцев
- Сообщений: 918
- Репутация:55[+] [-]
- Откуда: Грузия, город Рустави
|
Думаю, что возможно, спецы по батникам смогут подправить код:@echo off SetLocal EnableExtensions echo @echo off> myassoc.cmd For /F "delims=" %%? in ('assoc') do echo assoc %%?>> myassoc.cmd echo Exit /B>>myassoc.cmd Либо написать с нуля.
Последний раз редактировалось: rezorustavi (2022-11-03 11:56), всего редактировалось 1 раз
|
bighead
- Стаж: 3 года 1 месяц
- Сообщений: 402
- Репутация:24[+] [-]
|
|
rezorustavi
- Стаж: 8 лет 11 месяцев
- Сообщений: 918
- Репутация:55[+] [-]
- Откуда: Грузия, город Рустави
|
97990попробуйте, сделал с названиями носителей. Работает, спасибо!
|
bighead
- Стаж: 3 года 1 месяц
- Сообщений: 402
- Репутация:24[+] [-]
|
rezorustavi, Dism.exe /online /Export-DefaultAppAssociations:C:\PS\DefaultAssoc.xml Dism.exe /Online /Import-DefaultAppAssociations:C:\PS\DefaultAssoc.xml Вот идеально бы было, но почему-то импортировать нельзя в существующий профиль. Интересно, что даже в этом случае некоторые значения расширений сбрасываются.
|
JuraAD
- Стаж: 3 года 5 месяцев
- Сообщений: 86
- Репутация:27[+] [-]
|
Для пользователя: HKEY_CLASSES_ROOT HKEY_CURRENT_USER\Software\Classes линк на HKEY_CLASSES_ROOT sid пользователя S-1-5-21-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxx HKEY_USERS\S-1-5-21-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxx_Classes HKEY_USERS\S-1-5-21-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxx\Software\Classes линк на HKEY_USERS\S-1-5-21-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxx_Classes Глобальные для всех: HKEY_LOCAL_MACHINE\SOFTWARE\Classes асоциации прописываются для расширений файлов начинаются с "." но, в ассоциациях могут быть ссылки на классы... чтоб забэкапить ассоциации нужно выгружать все ветки "Classes" - глобальную + локальную... зы: как-то так... -)
|
JuraAD
- Стаж: 3 года 5 месяцев
- Сообщений: 86
- Репутация:27[+] [-]
|
rezorustavi, https://usbtor.ru/viewtopic.php?p=89071#89071 посмотри ссылку на вики. Там указаны файлы веток реестра HKEY_LOCAL_MACHINE\SOFTWARE\Classes нужно будеть выцарапывать из 04= Ветка реестра «HKEY_LOCAL_MACHINE\SOFTWARE» формируется из файла «%SystemRoot%\System32\config\SOFTWARE остальное лежит в отдельных файлах, это если из под PE искать и выгружать... а так, reg.exe в помощь... зы: заодно узнаешь reg файл и куст реестра
|
rezorustavi
- Стаж: 8 лет 11 месяцев
- Сообщений: 918
- Репутация:55[+] [-]
- Откуда: Грузия, город Рустави
|
JuraAD, Благодарю, но там не так все просто. И в новых системах могут пути отличаться.
|
bighead
- Стаж: 3 года 1 месяц
- Сообщений: 402
- Репутация:24[+] [-]
|
rezorustavi, я делал бэкап через утилиту transwiz(профиля), с одной вин10 на другую. После восстановления все основные ассоциации сбрасывались. Так что там тёмный лес. в win10tweaker в pro версии это реализовано, но и там не всё не гладко судя по всему: https://win10tweaker.ru/forum/topic/%D1%8D%D0%BA%D1...0%BB%D0%BE%D0%B2 и есть вот такая софтина: default programs editor она может делать бэкап ассоциациий реестра, но непонятно куда она эти бэкапы складывает, так бы можно было узнать что там сохраняется. https://defaultprogramseditor.com/ ну и я попробовал применить файл реестра бэкапа отдельной ассоциации сделанной через программу AZJIO - ничего не получилось, ошибка. Если бы это было возможно просто сделать - то это бы уже сделали, win10 не вчера появилась. А максимум что сделали из доступного - это применение нужных ассоциаций через батники.
|
rezorustavi
- Стаж: 8 лет 11 месяцев
- Сообщений: 918
- Репутация:55[+] [-]
- Откуда: Грузия, город Рустави
|
Нашел в сети батник по безопасной загрузки, перевел на русский язык, добавил запуск от администратора. Просьба потестировать, если что не так, подправить. Спасибо. Мой вариант:@echo off set "params=%*" cd /d "%~dp0" && ( if exist "%temp%\getadmin.vbs" del "%temp%\getadmin.vbs" ) && fsutil dirty query %systemdrive% 1>nul 2>nul || ( echo Set UAC = CreateObject^("Shell.Application"^) : UAC.ShellExecute "cmd.exe", "/k cd ""%~sdp0"" && %~s0 %params%", "", "runas", 1 >> "%temp%\getadmin.vbs" && "%temp%\getadmin.vbs" && exit /B ) chcp 1251 >nul echo ................................................ echo Нажмите 1, 2, 3, чтобы выбрать задачу, или 4, чтобы выйти. echo ................................................ echo. echo 1 - Минимальная безопасная загрузка echo 2 - Безопасная загрузка с поддержкой сети echo 3 - Обычная загрузка echo 4 - Выход echo. SET /P M=Выбор за Вами 1, 2, 3, 4 затем нажмите ВВОД: IF %M%==1 GOTO safe IF %M%==2 GOTO safenet IF %M%==3 GOTO normal IF %M%==4 GOTO exit :safe bcdedit /set {default} safeboot minimal goto reboot :safenet bcdedit /set {default} safeboot network goto reboot :normal bcdedit /deletevalue {default} safeboot goto reboot :reboot shutdown -r -f -t 4 exit :exit exit Оригинал:@echo off echo ................................................ echo Press 1, 2, 3 to select your task, or 4 to EXIT. echo Run this script with admin privileges . echo ................................................ echo. echo 1 - Safe Boot Minimal echo 2 - Safe Boot with Network echo 3 - Normal Boot echo 4 - Exit echo. SET /P M=Type 1, 2, 3, 4 then press ENTER: IF %M%==1 GOTO safe IF %M%==2 GOTO safenet IF %M%==3 GOTO normal IF %M%==4 GOTO exit :safe bcdedit /set {default} safeboot minimal goto reboot :safenet bcdedit /set {default} safeboot network goto reboot :normal bcdedit /deletevalue {default} safeboot goto reboot :reboot shutdown -r -f -t 4 exit :exit exit
|
bighead
- Стаж: 3 года 1 месяц
- Сообщений: 402
- Репутация:24[+] [-]
|
rezorustavi, а чем плох One Time Emergency Run ? Есть ещё в таком виде от loban_ser И тут не только безопасный режим, а, например, очень полезный режим запуска без подписи драйверов.
|
rezorustavi
- Стаж: 8 лет 11 месяцев
- Сообщений: 918
- Репутация:55[+] [-]
- Откуда: Грузия, город Рустави
|
bighead, Тут другой вариант, чисто батником, без дополнительных файлов. А то, что он плох, я этого не писал.
|
Ander_73
- Стаж: 7 лет 10 месяцев
- Сообщений: 3868
- Репутация:127[+] [-]
|
Почему обсуждение утилит идёт в теме по вопросам написания батников?
|
bighead
- Стаж: 3 года 1 месяц
- Сообщений: 402
- Репутация:24[+] [-]
|
rezorustavi, пожалуйста, одним батником:@set @x=0; /* @echo off ver |>NUL find /v "5." && if "%~1"=="" cscript.exe //nologo //e:jscript "%~f0"& exit /b chcp 1251>nul color 70 if defined PROCESSOR_ARCHITEW6432 start %SystemRoot%\Sysnative\cmd.exe /c "%~dpnx0" %* & exit set WinPE=& 2>nul (<%SystemRoot%\system32\config\system set /p WinPE=) if not defined WinPE >nul 2>&1 dism|| goto runas cls cd /d "%~dp0" set tdir=%tmp%\ONSE_WinPE set lst=%tdir%\list.txt 2>nul (del /f/a/q %tdir%& rd /q/s %tdir%& md %tdir%) for /f "tokens=3" %%a in ( '2^>nul reg query "HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage" /v ACP' ) do >nul 2>&1 chcp %%a set id=identifier& for /f "tokens=1 delims= " %%a in ('bcdedit.exe /enum^|find /i "идентификатор"') do set id=%%a 2>nul bcdedit.exe /enum all| find "path"| >nul find ".efi"&& set isEFI=UEFI|| set isEFI=BIOS SetLocal EnableDelayedExpansion :sel set c=0& set count=0& set "cont=1"&set s=::& set tpth=& set Bootloader=& set pth=& set name=& set var=& set "userinp=" cls echo. set /a c+=1&echo !c!.*Current system set /a c+=1&echo !c!.Boot from WinPE (Bootloader) set /a c+=1&echo !c!.Choose BCD set /a c+=1&echo !c!.Delete selected item from BCD for %%i in (B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do ( if exist %%i:\boot\bcd ( set s=1 xcopy /hy %%i:\boot\bcd !tdir! 2>nul 1>&2 if !errorlevel!==0 ( set /a c+=1&set pth!c!=%%i:\boot\bcd& echo !c!.%%i: BIOS [\boot\bcd] If exist !tdir!\bcd del /q !tdir!\bcd )) if exist %%i:\efi\microsoft\boot\bcd ((if not defined s echo.)&set /a c+=1&set pth!c!=%%i:\efi\microsoft\boot\bcd& echo !c!.%%i: UEFI [\efi\microsoft\boot\bcd]) ) set /a c+=1&echo !c!.Выход ( {!c!} and {ENTER} ) echo. set /p var= ^> Выберите : FOR /L %%b IN (5,1,%c%) DO ( if "!var!"=="1" set "pth=true" if "!var!"=="2" goto :wre if "!var!"=="3" set Bootloader=true& goto :SetBCD if "!var!"=="!c!" goto :quit if "!var!"=="4" set delbcd=true& goto :SetBCD if "!var!"=="%%b" set pth=!pth%%b! ) if not defined var goto sel :list if defined pth ( set n=& set tpth=& if !var! GEQ 3 set n=true if defined n ( if not defined name set name=bcd 2>nul del /f/a/q !tdir!\!name! 2>nul del /f/a/q !lst! >nul xcopy /hy !pth! !tdir!& set tpth=/store !tdir!\!name! ) cls set s=& set i=& set p=& set "d=" for /f "tokens=1*" %%a in ('bcdedit.exe !tpth! /enum all') do ^ set "l=%%a"& if "!l:~0,11!"=="-----------" ( if defined d if defined p call :out set s=& set i=& set p=& set "d=" ) else ( if /i "%%a"=="!id!" set i=%%b if /i "%%a"=="description" set "d=%%b" if /i "%%a"=="path" if "%%~nb" neq "winresume" set p=true if /i "%%a"=="kernel" set p=1 if not defined p if /i "%%a"=="device" if "%%~nb" neq "unknown" set p=true if /i "%%a"=="FilePath" set "p=" if /i "%%a"=="systemroot" set s=1 if /i "%%a"=="winpe" if /i "%%b"=="yes" set "s=" if /i "!d!"=="Windows Recovery Environment" set WinRE=1&set guid1=!i! if /i "!d!"=="ONSE_WinPE" If Not "!i!"=="{current}" ( bcdedit.exe !tpth! /delete !i! 2>nul 1>&2 goto list ) ) ) cls if defined d if defined p call :out if defined n call :quest echo. echo !cont!.Расширеные варианты загрузки echo. set /a cont+=1& echo !cont!.Безопасный режим set /a cont+=1& echo !cont!.Безопасный режим с загрузкой сетевых драйверов set /a cont+=1& echo !cont!.Безопасный режим с поддержкой командной строки echo. set /a cont+=1& echo !cont!.Ведение журнала загрузки set /a cont+=1& echo !cont!.Включение видеорежима с низким разрешением (640x480) set /a cont+=1& echo !cont!.Последняя удачная конфигурация echo. set /a cont+=1& echo !cont!.Отключение обязательной подписи драйверов set /a cont+=1& echo !cont!.Отключить функцию раннего запуска антивредоносной защиты (ELAM) set /a cont+=1& echo !cont!.Отключить автоматическую перезагрузку при отказе системы echo. set /a cont+=1& echo !cont!.Принудительно использовать одно ядро при загрузке set /a cont+=1& echo !cont!.Отключить автоматическую перезагрузку echo. set /a cont+=1& echo !cont!.Обычная загрузка Windows (!osdef!) echo. set /a cont+=1& echo !cont!.Диагностика памяти If "!WinRE!"=="1" set /a cont+=1& echo !cont!.Устранение неполадок (Windows Recovery Environment) echo. set /p userinp= ^> Выберите, что хотите сделать : if not defined userinp goto sel echo. if "!userinp!"=="15" set guid=!guid1! if "!userinp!"=="14" set guid={memdiag} set s=& for /f "tokens=2 delims={}" %%a in ('bcdedit.exe /copy !guid! /d "ONSE_WinPE"') do set guid={%%a} if "!userinp!"=="1" set s=advancedoptions true if "!userinp!"=="2" set s=safeboot minimal if "!userinp!"=="3" set s=safeboot network if "!userinp!"=="4" ( bcdedit.exe /set !guid! safeboot minimal bcdedit.exe /set !guid! safebootalternateshell yes ) if "!userinp!"=="5" ( bcdedit.exe /set !guid! sos on bcdedit.exe /set !guid! bootlog yes ) if "!userinp!"=="6" set s=vga on if "!userinp!"=="7" set s=lastknowngood on if "!userinp!"=="8" ( bcdedit.exe /set !guid! testsigning on bcdedit.exe /set !guid! nointegritychecks on bcdedit.exe /set !guid! loadoptions DISABLE_INTEGRITY_CHECKS ) if "!userinp!"=="9" set s=disableelamdrivers yes if "!userinp!"=="10" set s=nocrashautoreboot on if "!userinp!"=="11" set s=onecpu on if "!userinp!"=="12" ( bcdedit.exe /set !guid! recoveryenabled no bcdedit.exe /set !guid! bootstatuspolicy ignoreallfailures ) if "!userinp!"=="13" for /f "skip=3 tokens=1" %%a in ('bcdedit.exe /enum !guid!') do ( set p=& for %%i in ( !id! device path description inherit osdevice systemroot ) do if /i %%a==%%i set p=1 if not defined p bcdedit.exe /deletevalue !guid! %%a ) if "!userinp!"=="15" goto reboot if "!userinp!"=="14" goto reboot if defined s bcdedit.exe /set !guid! !s! bcdedit.exe /displayorder !guid! /remove ) :wre if not defined pth ( cls echo. echo Boot from WinPE goto bootPE ) goto reboot :bootPE call :SetBCD if not defined fname goto sel set sdi=& for /f "tokens=1*" %%a in ('bcdedit.exe /enum all') do ^ if /i "%%a"=="!id!" (set i=%%b) else if /i "%%a"=="ramdisksdipath" call set sdi=!i! if defined sdi goto next for /f "tokens=2 delims={}" %%a in ('bcdedit.exe /create {ramdiskoptions}') do set sdi={%%a} bcdedit.exe /set !sdi! ramdisksdidevice partition=C: bcdedit.exe /set !sdi! ramdisksdipath \Windows\System32\boot.sdi reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v "*2" /t REG_SZ /d "bcdedit /delete {ramdiskoptions} /f" /f :next for /f "tokens=2 delims={}" %%a in ('bcdedit.exe /create /d "ONSE_WinPE" /application osloader') do set guid={%%a} set i=bcdedit.exe /set !guid! %i% device ramdisk=!fname!,!sdi! %i% osdevice ramdisk=!fname!,!sdi! %i% systemroot \windows %i% winpe yes %i% nx optin %i% detecthal yes %i% testsigning on %i% nointegritychecks on ) :reboot if not defined n reg add "HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v "*1" /t REG_SZ /d "bcdedit /delete !guid!" /f 2>nul 1>&2 bcdedit.exe !tpth! /bootsequence !guid! 2>nul 1>&2 cls echo. echo. set /p inp= ^> Перезагрузить этот компьютер прямо сейчас? (нажмите 1 и {ENTER} ) ^ или ^ вернуться в главное меню ( {ENTER} ): if "!inp!"=="1" shutdown.exe -r -f -t 05 if "!inp!"=="" goto sel :quit 2>nul (rd /q/s %tdir%) Exit :out if !i!=={bootmgr} exit /b set /a count+=1 ::echo !i! set cur= & if !i!=={current} set guid=!i!&set cur=* if !i!=={default} set guid=!i!&set cur=* set vars=& if defined s set "vars=... >" ::echo !cur!!d!!vars! if defined cur if defined s set osdef=!cur!!d!!vars! if !var! GEQ 3 set g=!count!.!cur!!d!!vars! !i! if defined g echo !g!>>%lst% exit /b :quest for /f "tokens=1 delims={" %%a in (!lst!) do echo %%a echo. set skip=&set /p skip= ^> Выберите пункт : if not defined skip goto sel set /a skip=%skip%-1 set skip=& if %skip% gtr 0 set skip=skip=%skip% set gud=& for /f "%skip% tokens=1* delims={" %%a in (%lst%) do call set "nam=%%a"&call set gud={%%b& goto :next !gud! !nam! :next set guid=!gud!& set "idname=!nam!" if defined n set tpth=& if defined pth set tpth=/store !pth! if defined delbcd goto DellBCD !idname! goto reboot :SetBCD >%tdir%\f1.vbs echo WScript.Echo CreateObject("WScript.Shell").Exec("mshta.exe ""about:<input type=file id=FILE><script>FILE.click();new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);</script>""").StdOut.ReadLine set fname=& set fname1=& for /f "delims=" %%a in ('cscript.exe //nologo %tdir%\f1.vbs') do ( set fname1="%%~a"& set fname=[%%~da]"%%~pnxa"& set "name=%%~nxa" if not defined Bootloader if not defined delbcd if /i "%%~xa"==".wim" (exit /b !fname!) else goto bootSec ) set pth=!fname1! if not defined pth goto sel goto list :DellBCD cls echo. echo Удаляю пункт: !idname! echo. rem bcdedit.exe !tpth! /delete !guid! /f TIMEOUT /T 5 /NOBREAK >nul goto sel :bootSec if "!isEFI!"=="UEFI" ( echo Ошибка: загрузчик не поддерживается в UEFI TIMEOUT /T 5 /NOBREAK >nul goto sel ) if defined n set "tpth=" for /f "tokens=2 delims={}" %%a in ('bcdedit.exe !tpth! /create /d "ONSE_WinPE" /application bootsector') do set guid={%%a} for /f "tokens=1,2 delims=[]" %%a in ("!fname!") do ( bcdedit.exe !tpth! /set !guid! device partition=%%a >nul 2>&1 bcdedit.exe !tpth! /set !guid! path %%b >nul 2>&1 ) goto reboot :runas set vbs=%tmp%\f.vbs >%vbs% echo WScript.CreateObject("Shell.Application").ShellExecute "%comspec%", "/c cd /d ""%~sdp0"" && %~snx0", "", "runas", 1 cscript //nologo %vbs% del /q %vbs% :: Эту строку не трогать. Ниже ничего не писать!!! */new ActiveXObject('Shell.Application').ShellExecute (WScript.ScriptFullName,'Admin','','runas',1);
Последний раз редактировалось: bighead (2022-11-10 08:20), всего редактировалось 1 раз
|
Страница 80 из 94
Текущее время: 23-Дек 00:26
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|