rockdgon
  - Longevity: 7 years 11 months
- Posts: 93
- REPUTATION:0[+] [-]
|
Столкнулся с такой бедой. Собираю в одном командном файле и установку и удаление различного портабла. И бывают случаи когда нужно, чтобы командный файл был запущен от админа, потому как не получается все что нужно в реестр прописать например. Для того чтобы скрипт перезапускался сам от админа использую такую конструкцию:@Echo off ::Элевация прав администратора reg.exe query "HKU\S-1-5-19">nul 2>&1 if %errorlevel% equ 1 goto UACPrompt ::-----------------------------НАЧАЛО СКРИПТА----------------------------------------- chcp 866 <nul echo Y|Reg.exe delete "HKLM\SOFTWARE\Classes\*\shell\Universal Viewer" /f <nul echo Y|Reg.exe delete "HKLM\SOFTWARE\Classes\Directory\shell\Universal Viewer" /f if %1==pause pause EXIT /b ::-----------------------------КОНЕЦ СКРИПТА------------------------------------------ :: Эту строку не трогать. Ниже этой строки ничего дописывать НЕЛЬЗЯ !!! :UACPrompt mshta "vbscript:CreateObject("Shell.Application").ShellExecute("%~fs0", "", "", "runas", 1) & Close()" exit /b Беда в том, что если скрипт нужно выполнить с параметром, например install.cmd uninstall, то параметр не передается скрипту из-за того что тот перезапускается от админа. Пробовал приписать %! %2 %3 к ShellExecute - ничего не получилось. Как это можно решить?
|
nikzzzz
  - Longevity: 8 years 4 months
- Posts: 3114
- REPUTATION:127[+] [-]
|
rockdgon,48291Пробовал приписать %! %2 %3 к ShellExecute - ничего не получилось. А %* ?
|
nikzzzz
  - Longevity: 8 years 4 months
- Posts: 3114
- REPUTATION:127[+] [-]
|
А вообщето, через ShellExecute надо запускать не сам скрипт, а cmd.exe c параметрами
|
Ander_73
  - Longevity: 6 years 4 months
- Posts: 3265
- REPUTATION:127[+] [-]
|
mshta "vbscript:CreateObject("Shell.Application").ShellExecute("%~fs0", "тут_пишем_параметр", "", "runas", 1) & Close()"
|
rockdgon
  - Longevity: 7 years 11 months
- Posts: 93
- REPUTATION:0[+] [-]
|
При такой записиmshta "vbscript:CreateObject("Shell.Application").ShellExecute("%~fs0", "%1", "", "runas", 1) & Close()" Можно передать один параметр, а если их несколько? Вот такие варианты не работают:mshta "vbscript:CreateObject("Shell.Application").ShellExecute("%~fs0", "%1", "%2", "runas", 1) & Close()" mshta "vbscript:CreateObject("Shell.Application").ShellExecute("%~fs0", "%1 %2", "", "runas", 1) & Close()"
|
nikzzzz
  - Longevity: 8 years 4 months
- Posts: 3114
- REPUTATION:127[+] [-]
|
48296Можно передать один параметр, а если их несколько? Так я же написал, %* передаст все параметры.mshta "vbscript:CreateObject("Shell.Application").ShellExecute("%~fs0", "%*", "", "runas", 1) & Close()"
Last edited by nikzzzz on 2017-12-24 17:35; edited 1 time in total
|
rockdgon
  - Longevity: 7 years 11 months
- Posts: 93
- REPUTATION:0[+] [-]
|
nikzzzz, мин, ща проверю. Я не понял сначала и начал сразу после "%~fs0" ставить. Не выходит таким образомmshta "vbscript:CreateObject("Shell.Application").ShellExecute("%~fs0", "%*", "", "runas", 1) & Close()"
|
nikzzzz
  - Longevity: 8 years 4 months
- Posts: 3114
- REPUTATION:127[+] [-]
|
rockdgon, По идее, должно работать, проблемы могут быть только с кавычками в параметрах.
|
rockdgon
  - Longevity: 7 years 11 months
- Posts: 93
- REPUTATION:0[+] [-]
|
nikzzzz, Если написать %* то будет выполнен 1 параметр. Если параметров больше 1го, например install.cmd portable pause то вообще не выполняется
|
Ander_73
  - Longevity: 6 years 4 months
- Posts: 3265
- REPUTATION:127[+] [-]
|
@set @x=0; /* if .%1==. cscript.exe //nologo //e:jscript "%~f0"& exit rem Тело бат-ника exit */new ActiveXObject('Shell.Application').ShellExecute (WScript.ScriptFullName,'one two three','','runas',1);
|
nikzzzz
  - Longevity: 8 years 4 months
- Posts: 3114
- REPUTATION:127[+] [-]
|
rockdgon, Да, действительно работает тлько с одним параметром, попробую разобраться.
|
rockdgon
  - Longevity: 7 years 11 months
- Posts: 93
- REPUTATION:0[+] [-]
|
nikzzzz, попробовал параметры в переменную засунутьА переменную уже вставить в ShellExecute - не запускает.
|
rockdgon
  - Longevity: 7 years 11 months
- Posts: 93
- REPUTATION:0[+] [-]
|
ShellExecute вообще 2 параметра не хочет выполнять
|
rockdgon
  - Longevity: 7 years 11 months
- Posts: 93
- REPUTATION:0[+] [-]
|
Ander_73, спасибо, твой вариант заработал!
|
nikzzzz
  - Longevity: 8 years 4 months
- Posts: 3114
- REPUTATION:127[+] [-]
|
Есть еще вариант, правда не совсем корректный? но работаетset arg=%* if not "%arg%"=="" set arg=%arg: =,% mshta "vbscript:CreateObject("Shell.Application").ShellExecute("%~fs0", "%arg%", "", "runas", 1) & Close()"
Last edited by nikzzzz on 2017-12-24 19:21; edited 1 time in total
|
Page 1 of 3
Current time is: 05-Jun 19:35
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
|
|