Comments 78
Мне кажется, или оно параметры передает без кавычек? То бишь попытка исполнения cmd.exe -c «C:\Program Files\tram-pam-pam.exe» вызовет ошибку?
+2
В общем-то вы правы, но я не знаю однозначного способа экранировать пробелы для любого приложения (иначе как получив полный command line, приложения что в рамках PowerShell несколько затруднительно), т.к. у каждого приложения могут быть свои заморочки. Да взять тот же PowerShell – одит тип кавычек, другой, третий, и причем они не взаимозаменяемые!..
Сам я решаю эту проблему, задавая экранирующие символы при запуске скрипта:
powershell -File runas.ps1 cmd.exe /K echo \«quote test\»
Сам я решаю эту проблему, задавая экранирующие символы при запуске скрипта:
powershell -File runas.ps1 cmd.exe /K echo \«quote test\»
0
cmd.exe -c C:\Progra~1\tram-pam-pam.exe
+1
?
0
Товарищ предлагает использовать legacy-имена 8.3, чтобы избежать пробела.
+1
В которых (legacy именах) все названия файлов/папок где больше 8 символов сокращались до шести и приписывалось ~1, либо ~2 и так далее по числу файлов с совпадающими первыми 6 знаками.
+1
По моему вы как-то все усложнили. Для себя я это решил так — andyone.me/post/1525117103/privileges-in-windows-console
+8
Я, кстати, написал, что runas требует ввода пароля или saved credentials, что в данном случае было неприемлемо. Как неприемлем и обход UAC с помощью scheduler.
+1
Я это прочел, именно про это слова про усложнение. Просто на мой взгляд, если ты работаешь в консоли, то при запросе уход в другое окно (в данном случае UAC) — не правильно в корне. Либо консоль, либо GUI. Возможно во мне говорит линуксойд, но ИМХО — это правильно.
+1
Ok, видимо требуется дать дополнительные пояснения.
Скрипт, который мне нужно было запустить, находится в архиве, который выходит с build server, он предназначен для настройки тестового окружения на ОДНОЙ машине под Windows 7, которая может быть виртуальной, не в домене и т.д. и т.п. Т.е. тестер берет архив, запускает скрипт, и получает готовое к работе тестовое окружение.
При этом ставится задача минимизировать совершаемые телодвижения. В данном случае один запрос UAC это IMHO приемлемо, а вот необходимость предварительно сохранять credentials – нет.
Скрипт, который мне нужно было запустить, находится в архиве, который выходит с build server, он предназначен для настройки тестового окружения на ОДНОЙ машине под Windows 7, которая может быть виртуальной, не в домене и т.д. и т.п. Т.е. тестер берет архив, запускает скрипт, и получает готовое к работе тестовое окружение.
При этом ставится задача минимизировать совершаемые телодвижения. В данном случае один запрос UAC это IMHO приемлемо, а вот необходимость предварительно сохранять credentials – нет.
0
Тогда я вижу лишь использование этого решения — www.ntwind.com/software/utilities/hstart.html
0
Пытался я сделать полный аналог sudo с uac, но это невозможно из-за специальных ограничений архитекруты shellexecute, нельзя перенаправлять ввод/вывод, а без этого открывается новое окно — что ломает весь смысл.
Другое дело если кто-то найдёт как uac другим способом «зацепить», но это уже выше моего уровня =)
Другое дело если кто-то найдёт как uac другим способом «зацепить», но это уже выше моего уровня =)
+2
А как такой вариант? Sudo запускает Sudo Helper as administrator (может быть тот же самый EXE со спец. параметрами), устанавливает коммуникацию со своим родителем, и таким образом организует перенаправление ввода-вывода? :)
0
Ну примерно такой вариант мне тоже приходил в голову, но тогда UAC будет запрашивать разрешение на запуск самой «некой» sudo. (примерно так я и пытался сделать, но используя cmd.exe с перенаправлениями, fail в общем, как-то не догадался именно самого себя запускать)
В принципе я наверное так и сделаю в итоге, т.к. из других вариантов наверное только FindExecutable и AssocQueryString что очень громоздко конечно и имеет куда больше возможных точек сбоя.
В принципе я наверное так и сделаю в итоге, т.к. из других вариантов наверное только FindExecutable и AssocQueryString что очень громоздко конечно и имеет куда больше возможных точек сбоя.
0
Спасибо!
Я два года плевался когда видел надпись «запрошенная команда требует повышения», а тут просто как гвозди оказывается.
Я два года плевался когда видел надпись «запрошенная команда требует повышения», а тут просто как гвозди оказывается.
0
Извините, я просто не могу удержаться, я понимаю, что меня заминусуют, но я не могу об этом молчать!!!
sgzmd.i$ sudo commandname
-30
я понимаю, что меня заминусуют
И правильно сделают. Вы видели в каком блоге, этот топик? Нафига холивары, если человеку нужно помочь решить проблему на Windows и об этом четко сказано в топике?
+8
Видел. Но сделать все равно ничего не смог с собой :)
-31
Чувак, ты на 100% прав.:) Сложно удержаться.:) 50% постов в разделе Windows про проблемы, которые линуксоидам кажутся смешными.
-1
а вам не кажется что это разные архитектуры? у пользователей линукс есть такие проблемы, которые пользователям виндоус кажутся смешными. вы поймете о чем я или мне привести примеры?
+2
от примеров я в любом случае не откажусь просто из интереса. если не хотите здесь холивор, то можно ЛС. как больше нравится.
-1
самый яркий пример — драйвера на видеокарты ati.
другая сторона — отсутствие дров на некоторые железки. да, еще не все производители делают дрова под линукс, а те что делают либо делают их хорошо, либо до того хреново (для галочки), что ими пользоваться невозможно (камень в огород canon).
другая сторона — отсутствие дров на некоторые железки. да, еще не все производители делают дрова под линукс, а те что делают либо делают их хорошо, либо до того хреново (для галочки), что ими пользоваться невозможно (камень в огород canon).
0
А, ты слово «архитектура» сказал, я думал, ты мне про архитектуру ОС будешь писать. «Архитектура ОС не позволяет сделать того или того...»
А с драйверами и прикладным ПО (фотошопы и автокады) известная проблема. А с Ati так даже не смешно.:( Только ведь это не проблема Linux'a как ОС. Linux перестали предустанавливать на Asus eee не потому, что он не работал, а потому что M$ давит на вендоров. Начни Adobe делать Photoshop для Linux, я посмотрю на их соглашение с Microsoft.
Есть же комплекты десктопного железа, которые сертифицируют с Linux.
А когда вижу посты на хабре про написание чего-нибудь на PowerShell, то волосы дыбом, потом что сразу знаешь, как-то это легко сделать на bash'e.
А с драйверами и прикладным ПО (фотошопы и автокады) известная проблема. А с Ati так даже не смешно.:( Только ведь это не проблема Linux'a как ОС. Linux перестали предустанавливать на Asus eee не потому, что он не работал, а потому что M$ давит на вендоров. Начни Adobe делать Photoshop для Linux, я посмотрю на их соглашение с Microsoft.
Есть же комплекты десктопного железа, которые сертифицируют с Linux.
А когда вижу посты на хабре про написание чего-нибудь на PowerShell, то волосы дыбом, потом что сразу знаешь, как-то это легко сделать на bash'e.
-1
на счет дров и по — вот о том и говорю — у линуксоидов тоже свои болевые точки есть. И не надо тешить себя иллюзиями.
Да я и не спорю что на баше легко делается. я первое время без консоли скучал на венде, но ничего, притерся, привык.
Да я и не спорю что на баше легко делается. я первое время без консоли скучал на венде, но ничего, притерся, привык.
0
Не холивара ради, но дрова ати…
Три года назад — да были, наверное… Но три года назад я использовал дженту и видеокарту ati 9550(проблем не было — играл во все, что шло под вайном), сейчас использую убунту и встроенная в бук карточка ati hd3650, проблем нет — на прошлой неделе прошел half-life 2
Три года назад — да были, наверное… Но три года назад я использовал дженту и видеокарту ati 9550(проблем не было — играл во все, что шло под вайном), сейчас использую убунту и встроенная в бук карточка ati hd3650, проблем нет — на прошлой неделе прошел half-life 2
0
Ипожалуйста, пользователи линукса, не надо минусовать за правду. Не стоит тешить себя иллюзиями что у вас всё хорошо. Я после 3 лет пользования линуксом и вендой имею представление о том, о чем говорю.
0
UFO just landed and posted this here
Извините, но это всё равно что на вопрос «Как запустить IE9 в Wine» ответить «Купите Windows 7».
+13
Бугогашечки. В windows есть команда runas. Интерфейс у неё, конечно, не такой удобный, но…
Да, вот такой вот я извращенец.
PS: поищите по странице «runas» — поймёте, что автору эта команда (равно как и sudo под линуксом) не подходила.
C:\WINDOWS\system32>type sudo.bat
runas /env /user:Administrator %1
Да, вот такой вот я извращенец.
PS: поищите по странице «runas» — поймёте, что автору эта команда (равно как и sudo под линуксом) не подходила.
-1
можно просто cmd.exe стартовать с правами администратора.
Нажимаем Пуск, потом вводим в окошке ввода cmd, и жмем Ctrl-Shift-Enter
По идее и просто полный путь к своей программе указать — должно сработать
Нажимаем Пуск, потом вводим в окошке ввода cmd, и жмем Ctrl-Shift-Enter
По идее и просто полный путь к своей программе указать — должно сработать
+1
Сделал несколько криво: скопировал cmd.exe в sudocmd.exe, и прописал в его свойствах птицу «запускать от администратора».
После этого либо запускаем через sudocmd /c команда, либо заворачиваем в бантик для автоподстановки ключика /c.
Минусы — дополнительное консольное окошко.
После этого либо запускаем через sudocmd /c команда, либо заворачиваем в бантик для автоподстановки ключика /c.
Минусы — дополнительное консольное окошко.
+1
IMHO основной минус вашего способа, как и многих других – необходимость предварительной подготовки.
0
Впрочем, должен заметить, что и установка PowerShell может считать дополнительное подготовкой…
0
Не в Win7/2008r2
+1
Execution Policy все равно вручную задавать…
0
так он же встроен в W7.
0
sudo cmd.exe
-6
Два вопроса:
1. Пароль вводить потребуется? Хотя бы один раз?
2. При использовании этой утилиты предупреждение UAC будет?
1. Пароль вводить потребуется? Хотя бы один раз?
2. При использовании этой утилиты предупреждение UAC будет?
0
Последней указанной утилитой пользоваться не доводилось, но судя по описанию и то, что она является аналогом CPAU, то не надо. Программа вызывается с параметрами среди которых есть и пароль и вот отличии от CPAU его можно передавать не открытым текстом и шифрованным. За подробностями либо по ссылке либо в гугл.
0
Powershell tip of the day:
Running Commands Elevated
You can launch a separate PS environment and elevate it if you are running your script in a restricted environment and want to run a specific command with fully elevated privileges:
Running Commands Elevated
You can launch a separate PS environment and elevate it if you are running your script in a restricted environment and want to run a specific command with fully elevated privileges:
Start-Process powershell.exe -argumentlist '-command new-eventlog -logname application -source MyScripts' -verb runas
+1
Добавь сюда ключик -Wait и наслаждайся.
0
Безумно раздражает, когда твой пост читают наискосок. Я, между прочим, подробно написал, почему Start-Process тут не прокатывает!
0
То, что вам не удается при помощи -wait из под непривилегированного пользователя приостановить процесс запущенный с повышенными привилегиями — на мой взгляд все правильно иначе можно было бы творить очень жесткие вещи с системой.
А вот задуматься, а для чего вы используете -Wait не пробовали? Зачем вам надо перехватывать заккрытие процесса, запущенного под админом? Чтобы ошибки показать пользователю в консоли? Может просто в лог писать будет быстрее и проще?
Часто решение проблемы лежит не в плоскости вызова глубоких кишок чтобы сделать то, что вы хотите, но в другом подходе к задаче.
А вот задуматься, а для чего вы используете -Wait не пробовали? Зачем вам надо перехватывать заккрытие процесса, запущенного под админом? Чтобы ошибки показать пользователю в консоли? Может просто в лог писать будет быстрее и проще?
Часто решение проблемы лежит не в плоскости вызова глубоких кишок чтобы сделать то, что вы хотите, но в другом подходе к задаче.
+3
Ключик -Wait не приостанавливает процесс, а указывает, что нужно дождаться его завершения.
Мне это нужно, чтобы после завершения настроек принудительно открыть readme-файл. Как ни крути, а запускать браузер от имени администратора – это IMHO не самое лучшее решение. А вот понизить ему привилегии при запуске, или дождаться завершения скрипта инсталляции – тут, по-моему, особой разницы нет.
Мне это нужно, чтобы после завершения настроек принудительно открыть readme-файл. Как ни крути, а запускать браузер от имени администратора – это IMHO не самое лучшее решение. А вот понизить ему привилегии при запуске, или дождаться завершения скрипта инсталляции – тут, по-моему, особой разницы нет.
0
Со времен Vista первым делом после установки Windows копирую вот эту утилитку в system32: www.ntwind.com/blog/hstart-v1.1.html
+1
Точнее, вот правильная ссылка, та на старую версию еще без поддержки UAC: www.ntwind.com/software/utilities/hstart.html
+1
А можно ли как-нибудь из программы запросить привелегии администратора во время выполнения в Win7 или Vista? Например, мне нужно записать в системную папку, как некоторые приложения запрашивыют права прямо на ходу?
0
Да, как это сделать написано тут:
stackoverflow.com/questions/127042/how-to-uac-elevate-a-com-component-with-net
stackoverflow.com/questions/127042/how-to-uac-elevate-a-com-component-with-net
0
Насколько я знаю, чаще всего они запрашивают сами себя с параметрами указывающими что делать и повышенными привелегиями.
msdn.microsoft.com/en-us/library/bb756973.aspx
msdn.microsoft.com/en-us/library/bb756973.aspx
0
UFO just landed and posted this here
А почему скрипт? Напишите маленькую утилку в exe, которая себя элевейтнит и запустит нужное. Просто это самый простой вариант что пришёл мне в голову. Или есть ограничения в задаче почему так нельзя?
+1
А потому что без разницы, а утилиту IMHO сложнее сопровождать.
0
А я вот так сделал:
habrahabr.ru/qa/4329/#answer_18829
habrahabr.ru/qa/4329/#answer_18829
А я еще с висты прикопал у себя в %PATH% вот такой файлик sudo.vbs:
argc = WScript.Arguments.Count
set argv = WScript.Arguments
if argc < 1 then
WScript.Echo "Usage: sudo <arg1 arg2 .. argN>"
WScript.quit
end if
dim str
for i = 1 to argc-1
str = str + " " + argv(i)
next
set objShell = CreateObject("Shell.Application")
objShell.ShellExecute argv(0), str, "", "runas", 1
Забыл один нюанс — в ком. строке расширения исполняемых файлов отлично подставляются автоматом, а вот в диалоге по Win+R — нет, поэтому либо правим реестр, либо кладем рядом с sudo.vbs еще вот такой sudo.bat:
start "" /B %~dp0sudo.vbs %*
0
1. создать > ярлык > указать путь к программе
2. свойства > ярлык > дополнительно > запуск от имени администратора
3. в командной строке набрать <имя_ярлыка>.lnk
2. свойства > ярлык > дополнительно > запуск от имени администратора
3. в командной строке набрать <имя_ярлыка>.lnk
0
Какое ни какое решение автор для себя сделал, но предложу свой способ. Когда то давно делал для себя. Написал программку RunAs (скачать). Моя программка позволила писать логин и пароль в командной строке. То есть, если сделать в .bat файле и запустить её, то пароль писать вообще не придётся.
Программка написана на языке Delphi 7. Если нужны исходники — могу дать. Можно модифицировать под свои нужды.
Как запускать можно посмотреть через: RunAs.exe /?
Программка написана на языке Delphi 7. Если нужны исходники — могу дать. Можно модифицировать под свои нужды.
Как запускать можно посмотреть через: RunAs.exe /?
0
вендам надо sudo!
+1
start-process powershell -verb runAs
сделает тоже самое
start-process -FilePath C:\WINDOWS\system32\cmd.exe -verb runas
для cmd
сделает тоже самое
start-process -FilePath C:\WINDOWS\system32\cmd.exe -verb runas
для cmd
0
Для тех кто ещё ищет решение этой проблемы, я, столкнувшись с этим сам, нашёл такое решение: jagaroth.livejournal.com/63875.html
0
Start-Process 'cmd.exe' -Verb RunAs -WaitРаботает на win10.
0
Only those users with full accounts are able to leave comments. Log in, please.
Run as administrator из командной строки