rockdgon
- Longevity: 9 years 6 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: 9 years
- Posts: 3114
- REPUTATION:127[+] [-]
|
rockdgon,48291Пробовал приписать %! %2 %3 к ShellExecute - ничего не получилось. А %* ?
|
nikzzzz
- Longevity: 9 years
- Posts: 3114
- REPUTATION:127[+] [-]
|
А вообщето, через ShellExecute надо запускать не сам скрипт, а cmd.exe c параметрами
|
Ander_73
- Longevity: 7 years 11 months
- Posts: 3939
- REPUTATION:127[+] [-]
|
mshta "vbscript:CreateObject("Shell.Application").ShellExecute("%~fs0", "тут_пишем_параметр", "", "runas", 1) & Close()"
|
rockdgon
- Longevity: 9 years 6 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: 9 years
- 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: 9 years 6 months
- Posts: 93
- REPUTATION:0[+] [-]
|
nikzzzz, мин, ща проверю. Я не понял сначала и начал сразу после "%~fs0" ставить. Не выходит таким образомmshta "vbscript:CreateObject("Shell.Application").ShellExecute("%~fs0", "%*", "", "runas", 1) & Close()"
|
nikzzzz
- Longevity: 9 years
- Posts: 3114
- REPUTATION:127[+] [-]
|
rockdgon, По идее, должно работать, проблемы могут быть только с кавычками в параметрах.
|
rockdgon
- Longevity: 9 years 6 months
- Posts: 93
- REPUTATION:0[+] [-]
|
nikzzzz, Если написать %* то будет выполнен 1 параметр. Если параметров больше 1го, например install.cmd portable pause то вообще не выполняется
|
Ander_73
- Longevity: 7 years 11 months
- Posts: 3939
- 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: 9 years
- Posts: 3114
- REPUTATION:127[+] [-]
|
rockdgon, Да, действительно работает тлько с одним параметром, попробую разобраться.
|
rockdgon
- Longevity: 9 years 6 months
- Posts: 93
- REPUTATION:0[+] [-]
|
nikzzzz, попробовал параметры в переменную засунутьА переменную уже вставить в ShellExecute - не запускает.
|
rockdgon
- Longevity: 9 years 6 months
- Posts: 93
- REPUTATION:0[+] [-]
|
ShellExecute вообще 2 параметра не хочет выполнять
|
rockdgon
- Longevity: 9 years 6 months
- Posts: 93
- REPUTATION:0[+] [-]
|
Ander_73, спасибо, твой вариант заработал!
|
nikzzzz
- Longevity: 9 years
- 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: 18-Jan 00:59
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
|
|