[Цитировать]

    bighead
  • 29484
  • Стаж: 3 года 1 месяц
  • Сообщений: 402
  • Репутация:24

    [+] [-]
rezorustavi, так батником никак, по крайней мере без костылей(мне не ведомых)), можно сделать бэкап экспортируя ветки реестры, но при восстановлении win10 сбросить настройки.
AZJIO в теме пишет
SetUserFTA = 1 - расширения добавляются с помощью утилиты SetUserFTA, которая идёт в комплекте. Автор заявляет что она прописывает хеш, необходимый для доверенной ассоциации.
Утилита маленькая, попробуйте поработать с ней.
Но тут же пишет, что прога может и без утилиты обойтись:
CRCULM = 0 - не используется, но в будущем хотел добавить флаг определяющий в какой раздел прописывать данные, в HKCR (сейчас используемый) или HKCU (для текущего пользователя) или HKLM (для всех пользователей
Спросите его о методах, может что подскажет)
Мне самому интересно, но ничего путного не нашёл.

[Цитировать]

    rezorustavi
  • 2337
  • Стаж: 8 лет 11 месяцев
  • Сообщений: 918
  • Репутация:55

    [+] [-]
  • Откуда: Грузия, город Рустави
97988так батником никак
Думаю, что возможно, спецы по батникам смогут подправить код:
@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
  • 29484
  • Стаж: 3 года 1 месяц
  • Сообщений: 402
  • Репутация:24

    [+] [-]
rezorustavi, https://www.upload.ee/download/14636062/dbd7f7efa2001bea1ba9/Win1.cmd попробуйте, сделал с названиями носителей.

[Цитировать]

    rezorustavi
  • 2337
  • Стаж: 8 лет 11 месяцев
  • Сообщений: 918
  • Репутация:55

    [+] [-]
  • Откуда: Грузия, город Рустави
97990попробуйте, сделал с названиями носителей.
Работает, спасибо! az
Скриншот
( Эскиз не работает сегодня )

[Цитировать]

    bighead
  • 29484
  • Стаж: 3 года 1 месяц
  • Сообщений: 402
  • Репутация:24

    [+] [-]
rezorustavi, в принципе там достаточно строку добавить ag
а как будет лучше выдавать информацию, через % или словами вкусовщина))
https://www.upload.ee/download/14636099/b73fb23405871bea218f/Win2.zip

[Цитировать]

    bighead
  • 29484
  • Стаж: 3 года 1 месяц
  • Сообщений: 402
  • Репутация:24

    [+] [-]
rezorustavi,
Dism.exe /online /Export-DefaultAppAssociations:C:\PS\DefaultAssoc.xml
Dism.exe /Online /Import-DefaultAppAssociations:C:\PS\DefaultAssoc.xml
ag
Вот идеально бы было, но почему-то импортировать нельзя в существующий профиль.
Интересно, что даже в этом случае некоторые значения расширений сбрасываются.

[Цитировать]

    JuraAD
  • 28398
  • Стаж: 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
  • 28398
  • Стаж: 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
  • 2337
  • Стаж: 8 лет 11 месяцев
  • Сообщений: 918
  • Репутация:55

    [+] [-]
  • Откуда: Грузия, город Рустави
JuraAD,
aa Благодарю, но там не так все просто. И в новых системах могут пути отличаться.

[Цитировать]

    bighead
  • 29484
  • Стаж: 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
  • 2337
  • Стаж: 8 лет 11 месяцев
  • Сообщений: 918
  • Репутация:55

    [+] [-]
  • Откуда: Грузия, город Рустави
aa Нашел в сети батник по безопасной загрузки, перевел на русский язык, добавил запуск от администратора.
Просьба потестировать, если что не так, подправить. Спасибо.
Мой вариант:
@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
  • 29484
  • Стаж: 3 года 1 месяц
  • Сообщений: 402
  • Репутация:24

    [+] [-]
rezorustavi, а чем плох One Time Emergency Run ?
Есть ещё в таком виде от loban_ser
И тут не только безопасный режим, а, например, очень полезный режим запуска без подписи драйверов.

[Цитировать]

    rezorustavi
  • 2337
  • Стаж: 8 лет 11 месяцев
  • Сообщений: 918
  • Репутация:55

    [+] [-]
  • Откуда: Грузия, город Рустави
bighead, aa
Тут другой вариант, чисто батником, без дополнительных файлов. А то, что он плох, я этого не писал. az

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 10 месяцев
  • Сообщений: 3868
  • Репутация:127

    [+] [-]
Почему обсуждение утилит идёт в теме по вопросам написания батников? bw

[Цитировать]

    bighead
  • 29484
  • Стаж: 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


Показать сообщения:    

Текущее время: 22-Дек 18:56

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы