[Quote]

    dimo70
  • 17296
  • Longevity: 4 years
  • Posts: 2881
  • REPUTATION:37

    [+] [-]
  • Location: BG
Привет всем,
Возможно ли сделать код, который копирует екзешник и перезапускает систему в сейф мод. После входа в сейф мод код должен запустить екзешника автоматом?
Вот именно етот запуск не знаю как можно сделать.

[Quote]

    JuraAD
  • 28398
  • Longevity: 4 months 20 days
  • Posts: 14
  • REPUTATION:4

    [+] [-]
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot
AlternateShell
лучше менять
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\SafeBoot
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\SafeBoot
bcdedit /set {current} safeboot minimal
или аналогичные
bcdedit /set {current} safebootalternateshell yes
ребут
возвращать нормальную загрузку скорее всего придется вручную...
зы: как вернуть взад, экспериментируй - я этого не делал... -)))

[Quote]

    dimo70
  • 17296
  • Longevity: 4 years
  • Posts: 2881
  • REPUTATION:37

    [+] [-]
  • Location: BG
JuraAD, спасибо, сразу проверяю. второй ребут не проблемма.
Только не понял где запускается екзешник после ребута в сейфмод. Вроде в код такое нет. aa

[Quote]

    JuraAD
  • 28398
  • Longevity: 4 months 20 days
  • Posts: 14
  • REPUTATION:4

    [+] [-]
AlternateShell
это то, что запускается в safemode (обычно cmd.exe)
bcdedit /set {current} safeboot minimal
это установить дефолтный режим (их там несколько просто safe, с сетью и т.п.)
возможно нужно еще таймер задержки меню убрать - типа немедленно (не помню параметр)
bcdedit /set {current} safebootalternateshell yes
нужно, не нужно не знаю, флаг загрузки AlternateShell (yes/no/убрать - проверь)
shutdown /r /t 0
быстрая перезагрузка
сохрани файл BCD - чёб не париться с восстановлением... и загрузочную флэху под рукой держи.
поисчи в и-нет доки, думаю много таких вопросов есть...

[Quote]

    dimo70
  • 17296
  • Longevity: 4 years
  • Posts: 2881
  • REPUTATION:37

    [+] [-]
  • Location: BG
JuraAD, ок спасибо. Вроде понял. ab

[Quote]

    Gvint64
  • 24573
  • Longevity: 1 year 6 months
  • Posts: 364
  • REPUTATION:28

    [+] [-]
dimo70, aa Одноразовый запуск - прописать путь к нужной программе.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
ИЛИ ЗДЕСЬ
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce

[Quote]

    dimo70
  • 17296
  • Longevity: 4 years
  • Posts: 2881
  • REPUTATION:37

    [+] [-]
  • Location: BG
Gvint64, да именно одноразовый нужен.
Только ето в регистре, а как сделать как батник? aa
Например имеем 1.exe которое одноразово надо запустить в сейфмод минимал из C:\1.exe

[Quote]

    Gvint64
  • 24573
  • Longevity: 1 year 6 months
  • Posts: 364
  • REPUTATION:28

    [+] [-]
Как-то так. Исправил - должен в сейфе работать.
Reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" /v "*1" /t REG_SZ /d "C:\1.exe" /f
Где-то прочитал что Safemode конфликтует с Быстрым запуском - лучше на время отключать.
Docs Run and RunOnce


Last edited by Gvint64 on 2021-11-24 13:59; edited 4 times in total

[Quote]

    dimo70
  • 17296
  • Longevity: 4 years
  • Posts: 2881
  • REPUTATION:37

    [+] [-]
  • Location: BG
Gvint64, спасибо.
Быстрый запуск в новое железо почти повсюду запущено.

[Quote]

    BalAngel
  • 647
  • Longevity: 6 years 7 months
  • Posts: 246
  • REPUTATION:14

    [+] [-]
Не могу найти скрипт - заставить програму принять Net Framework версии выше
Помогите

[Quote]

    Ander_73
  • 15549
  • Longevity: 4 years 10 months
  • Posts: 2590
  • REPUTATION:127

    [+] [-]
BalAngel, на всякий случай, а конфиг (file_name.exe.config) такого вида рядом с ехе-файлом не поможет?
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0"/>
    <supportedRuntime version="v2.0.50727"/>
  </startup>
</configuration>

[Quote]

    cartmenezz
  • 1384
  • Longevity: 6 years 3 months
  • Posts: 429
  • REPUTATION:11

    [+] [-]
  • Location: Калининград
Всем привет aa
Задача:
* Полуавтоматическое создание ярлыка в меню Пуск\Стандартные
* При запуске ярлыка происходит копирование в буфер текста
* Текст задается при создании ярлыка
* У ярлыка:
- сочетание клавиш для быстрого вызова
- свернутый в окно запуск
В данный момент использую утилиту Shortcut

синтаксис Shortcut

Shortcut [Version 1.11]
Creates, modifies or queries Windows shell links (shortcuts)
The syntax of this command is:
Shortcut.exe /F:filename /A:C|E|Q [/T:target] [/P:parameters] [/W:workingdir]
         [/R:runstyle] [/I:icon,index] [/H:hotkey] [/D:description]
/F:filename    : Specifies the .LNK shortcut file.
/A:action      : Defines the action to take (C=Create, E=Edit or Q=Query).
/T:target      : Defines the target path and file name the shortcut points to.
/P:parameters  : Defines the command-line parameters to pass to the target.
/W:working dir : Defines the working directory the target starts with.
/R:run style   : Defines the window state (1=Normal, 3=Max, 7=Min).
/I:icon,index  : Defines the icon and optional index (file.exe or file.exe,0).
/H:hotkey      : Defines the hotkey, a numeric value of the keyboard shortcut.
/D:description : Defines the description (or comment) for the shortcut.
Notes:
- Any argument that contains spaces must be enclosed in "double quotes".
- If Query is specified (/A:Q), all arguments except /F: are ignored.
- To find the numeric hotkey value, use Explorer to set a hotkey and then /A:Q
- To prevent an environment variable from being expanded until the shortcut
   is launched, use the ^ carat escape character like this: ^%WINDIR^%
Examples:
   /f:"%ALLUSERSPROFILE%\Start Menu\Programs\My App.lnk" /a:q
   /f:"%USERPROFILE%\Desktop\Notepad.lnk" /a:c /t:^%WINDIR^%\Notepad.exe /h:846
   /f:"%USERPROFILE%\Desktop\Notepad.lnk" /a:e /p:C:\Setup.log /r:3
An argument of /? or -? displays this syntax and returns 1.
A successful completion will return 0.
Упрощенно имею такой батник:
@echo off
cls
cd /d "%~dp0"
set "link_dir=%AppData%\Microsoft\Windows\Start Menu\Programs\Accessories"
set var=& set /p "var=Enter: "|| GoTo :1
Shortcut.exe /F:"%link_dir%\test.lnk" /A:C /T:"%ComSpec%" /P:"/c @echo off& echo|set /p=%var%| Clip" /R:7 /H:1585)
echo.
pause
exit /b
И в принципе все работает, но есть ограничения:
- Текст не может начинаться с пробела
- Нельзя использовать кавычки и символы: | & < >
Самое обидное, что не считая кавычек и начальных пробелов - остальное МОЖНО ОБОЙТИ:
Сейчас поле "Объект" созданного ярлыка имеет такое содержимое:
C:\Windows\System32\cmd.exe /c @echo off& echo|set /p=ANY_TEXT| Clip
Достаточно было бы добиться результата:
C:\Windows\System32\cmd.exe /c @echo off& echo|set /p"=ANY_TEXT"| Clip
и можно было бы использовать в тексте символы: | & < >
Проблема в том, что средствами батника не удается прописать строку в таком виде, Shortcut.exe не дает использовать кавычки внутри параметра (так как кавычками обрамляются сами параметры).
Что я уже только не пробовал, бьюсь второй день...
PS: наткнулся на вариант создания ярлыка без внешних программ:
mshta vbscript:Execute("Set x=CreateObject(""WScript.Shell"").CreateShortcut(""%link_dir%\test.lnk""):x.TargetPath=""%Comspec%"":x.Arguments=""/c @echo off& echo|set /p=%var%| Clip"":x.WindowStyle=""7"":x.HotKey=""CTRL+ALT+1"":x.Save():Close()")
Тоже работает, но та же проблема
+++
По идее, можно после SET /P сначала записать значение переменной в файл:
>"%link_dir%\test.test" echo "%var%"
А потом в ярлыке читать из этого файла:
Shortcut.exe /F:"%link_dir%\test.lnk" /A:C /T:"%ComSpec%" /P:"/c @echo off&<test.txt Clip" /R:7 /H:1585)
Хоть мне бы очень и очень хотелось избежать создания доп файлов, помимо самого ярлыка, но я уже и на это готов пойти.
Вот только теперь не могу додумать, как убрать обрамляющие двойные кавычки у записанного текста.
А записать без них не получится, так как снова будут проблемы, если в содержимое %var% попадут спецсимволы

[Quote]

    JuraAD
  • 28398
  • Longevity: 4 months 20 days
  • Posts: 14
  • REPUTATION:4

    [+] [-]
Спецсимволы приходится экранировать:
" - "
<>& - ^
% - %
- иногда приходится удваивать, в зависимости как вызовы происходят и что вызывается...
Поэкспериментируй, не знаю каким Shortcut.exe пользуешься... Могу на js написать, vbs не люблю, но смысл тот-же... -)
Пример (отсыпаюсь, времени нет)
@echo off&setlocal enableextensions enabledelayedexpansion
set /p "x0=Enter: "
set "x0=%x0:"=""%"
set "x0=%x0:<=^<%"
set "x0=%x0:>=^>%"
set "x0=%x0:&=^&%"
set "x0=%x0:^%=^%^%%"
echo %x0%
endlocal&exit /b 0
mshta - для другого предназначен (приложение с использованием html), используй cscript
для js я так пишу - cmd файл
@if (0==1) @end /*
@echo off&setlocal enableextensions enabledelayedexpansion
cscript.exe %0 //E:JScript //Nologo
endlocal
exit /b 0 */
WScript.Echo("\tok");
и т.д

[Quote]

    cartmenezz
  • 1384
  • Longevity: 6 years 3 months
  • Posts: 429
  • REPUTATION:11

    [+] [-]
  • Location: Калининград
JuraAD, aa
экранировать само собой тоже пробовал, но это не подходит, мне ведь не на экран надо вывести.
Допустим я ввел:
1&2
В ярлык запишется:
C:\Windows\System32\cmd.exe /c @echo off& echo|set /p=1^&2| Clip
При выполнении этой команды скопируется только: 1
++++
90256
используй cscript для js я так пишу - cmd файл
вариант с cscript тоже находил, но с ним что-то незаладилось - сам я этими навыками не владею, а найденный пример у меня нормально не заработал, уже не помню деталей, и ещё вроде бы там не было всех нужных мне параметров ярлыка, добавить не получилось.. хотя даже если бы получилось, там бы я упёрся в ту же проблему - как сделать запись в ярлык с кавычками (...set /p "=%var%%"| Clip) ?

[Quote]

    cartmenezz
  • 1384
  • Longevity: 6 years 3 months
  • Posts: 429
  • REPUTATION:11

    [+] [-]
  • Location: Калининград
Кажется что-то получилось - удалось записать значение переменной в кавычках в файл, а потом перезаписать файл убрав кавычки:
@echo off
cls
cd /d "%~dp0"
set "link_dir=%AppData%\Microsoft\Windows\Start Menu\Programs\Accessories"
:1
set var=& set /p "var=Enter: "|| GoTo :1
>"%link_dir%\test_1.txt" echo "%var%"
for /f "useback delims=" %%G in ("%link_dir%\test_1.txt") do >"%link_dir%\test_1.txt" (echo|set /p=%%G)
Shortcut.exe /F:"%link_dir%\test_1.lnk" /A:C /T:"%ComSpec%" /P:"/c @echo off& <test_1.txt Clip" /R:7 /H:1585)
echo.
pause
exit /b
по хорошему, наверное, стоит сначала писать в предварительный файл, потом перезаписывать в основной, а потом удалять предварительный... но я пока с этим не заморачивался
PS: все еще очень не хотелось бы оставлять дополнительных файлов, помимо ярлыка, так что если у кого-нибудь есть идеи, пожалуйста поделитесь)

Page 65 of 66


Display posts:    

Current time is: 09-Dec 03:20

All times are UTC + 3


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
You cannot attach files in this forum
You can download files in this forum