Было бы проще если бы иметь хоть какое-нибудь описание цели запуска 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 от имени администратора?
Add(MainForm,2953706,168,189)
{
Width=481
Height=199
Position=1
}
Add(Button,16273687,168,287)
{
Left=20
Top=20
Width=91
Caption="DoExec"
link(onClick,14790517:doExec,[])
}
Add(WinExec,14790517,364,287)
{
Action=""
Point(UserName)
Point(Password)
Point(WorkingDir)
Point(doConsoleExec)
Point(doRunAsUser)
Point(doRunCpl)
link(FileName,10092216:Text,[(370,254)(342,254)])
link(UserName,1116111:Text,[])
link(Password,8672293:Text,[(391,254)(426,254)])
}
Add(Edit,1116111,378,189)
{
Left=193
Top=46
Width=114
Text="testuser"
}
Add(Edit,8672293,420,189)
{
Left=192
Top=68
Width=114
Text="testpassword"
}
Add(Edit,10092216,336,189)
{
Left=192
Top=20
Width=250
Text="ncpa.cpl"
}
Add(Button,7717896,168,322)
{
Left=20
Top=44
Width=91
Caption="DoShellExec"
link(onClick,14790517:doShellExec,[(282,328)(282,300)])
}
Add(Button,9019614,168,357)
{
Left=20
Top=68
Width=91
Caption="DoConsoleExec"
link(onClick,14790517:doConsoleExec,[(291,363)(291,307)])
}
Add(Button,2428001,168,392)
{
Left=20
Top=92
Width=91
Caption="DoRunAsUser"
link(onClick,14790517:doRunAsUser,[(302,398)(302,314)])
}
Add(Button,16645780,168,427)
{
Left=20
Top=116
Width=91
Caption="DoRunCpl"
link(onClick,14790517:doRunCpl,[(312,433)(312,321)])
}
Add(Label,2000072,378,140)
{
Left=128
Top=48
Width=30
Height=17
Caption="Login"
}
Add(Label,10152912,420,140)
{
Left=128
Top=72
Height=17
Caption="Password"
}
Add(Label,9168649,336,140)
{
Left=128
Top=24
Width=48
Height=17
Caption="FileName"
}