Добрый день, гуру!
Не получилось продолжить ветку https://usermap.hiasm.com/topic/63603 (Как запустить cmd.exe от имени администратора?) напишу здесь:
Есть предложение по изменеию компонента WinExec.
Считаю, что будет полезным (мне не хватает) добавление возможности запуска от имени другого пользователя и других компонентов (DoShellExec, DoConsoleExec, DoRunCpl).
Как вариант, можно добавить свойство "RunAsUser" (1/0). При RunAsUser=1, читать свойства "UserName" и "Password" при запуске объекта любого типа.
Ответов: 36
Рейтинг: 0
|
|||
карма: 0 |
|
Ответов: 207
Рейтинг: 2
|
|||
Задам глупый вопрос, а user и password в компоненте WinExec пробовал заполнять?
Было бы проще если бы иметь хоть какое-нибудь описание цели запуска CMD от имени администратора. Короче попробовал я запустить банально SFC /scannow с помощью WinExec требует повышения прав. Я и пользователя создал, добавил во все админ группы и не только. И пробовал запускать ярлык в котором стоит галочка запуска с наивысшими правами. И bat файл делал, короче не запустился.... единственное что я не пробовал это понизить UAC скорее всего проблема решится.но это не точно))) Редактировалось 1 раз(а), последний 2025-03-30 22:09:50 |
|||
карма: 0 |
|
Ответов: 4650
Рейтинг: 760
|
|||
Думаю, можно добавить отдельный метод для консоли doConsoleExecAsUser. И то я не уверен, может ли ограниченный процесс запустить другой с повышенными привилегиями и обмениваться с ним данными через каналы ввода-вывода.
Для doShellExec аналога не существует, заменяется обычным doRunAsUser с именем документа в командной строке. |
|||
карма: 26 |
|
Ответов: 36
Рейтинг: 0
|
|||
Было бы проще если бы иметь хоть какое-нибудь описание цели запуска CMD от имени администратора
Цель запуска CMD от имени администратора нужна для выполнения требующих этого задач без перелогинивания в другую учетку. Мы (техподдержка) администрируем кассовые компьютеры (POS-терминалы) на которых работает кассир с торгово-учетной программой под обычным пользователем. Например из командной строки мы лечим систему той же SFC или CHKDSK. А из панели управления настраиваем принтеры (CONTROL PRINTERS) или сеть (NCPA.CPL) и прочее. В настоящее время решаем, как запустить апплет NCPA.CPL с повышенными привилегиями. В противном случае система на дает открыть свойства сетевого подключения. Ниже приведен пример из которого видно, что ни один из методов не позволяет открыть NCPA.CPL с повышенными привилегиями. Панель открывается либо от обычного пользователя (ShellExec, RunCpl), либо вооще не открываеся (Exec, ConsoleExec, RunAsUser). Помещение команды в пакетный файл так же не дает нужного результата: Не запускается методами: AsUser, RunCpl От обычного пользователя: Exec, ShellExec, ConsoleExec Думаю, можно добавить отдельный метод для консоли doConsoleExecAsUser
Это частично решит вопрос, но как быть с запуском апплетов cpl от имени администратора?
|
|||
карма: 0 |
|
Ответов: 876
Рейтинг: 187
|
|||
sansey73 писал(а): Это частично решит вопрос, но как быть с запуском апплетов cpl от имени администратора?А так разве не запускается?
|
|||
карма: 18 |
|
Ответов: 36
Рейтинг: 0
|
|||
А так разве не запускается?
Запускается, но без повышенного приоритета |
|||
карма: 0 |
|
Ответов: 876
Рейтинг: 187
|
|||
sansey73 писал(а): Запускается, но без повышенного приоритетаУ меня на обоих компьютерах запускается от имени администратора. Вот схема для тестов.
Выглядит это так |
|||
карма: 18 |
|
Ответов: 36
Рейтинг: 0
|
|||
О, есть сдвиг, но только метод doShellExec не поднимает привилегии ни при каких обстоятельствах.
А вот если использовать doRunAsUser и подать на точки логин с паролем, то запуск от админа происходит успешно! И, к стати, что будет в поле Action, не имеет значения. Его даже можно оставить пустым. Получается, что запуск от админа командной строки, а из неё апплета cpl, даёт нужный результат! И это радует, спасибо!
|
|||
карма: 0 |
|
Ответов: 4650
Рейтинг: 760
|
|||
Если посмотреть в код компонента, то можно увидеть что doRunCpl - это тот же doExec, которым запускается файл rundll32.exe с передачей названия апплета в командной строке. Следовательно, несложно это же вызвать с помощью doRunAsUser.
|
|||
карма: 26 |
|
Ответов: 207
Рейтинг: 2
|
|||
Gunta писал(а): Action="runas"откуда ты это берешь? Впервые о такой команде слышу ты мне америку открыл! 17 лет сисьадмином работаю, понятное дело криворуким но все же))) Чуть позже нашел описание команды. https://ab57.ru/cmdlist/runas.html Редактировалось 1 раз(а), последний 2025-03-31 23:55:36 |
|||
карма: 0 |
|
Ответов: 876
Рейтинг: 187
|
|||
zhorik5 писал(а): откуда ты это берешь?Всё намного банальнее. Из реестра. Для каждого типа файлов есть свой перечень действий. Для EXE файлов он один
|
|||
карма: 18 |
|
11