-
Добрый день.
Работаю в Дельфи ХЕ, Windows 7.
Как запустить из одной рограммы другую программу в режиме администратора?
Требуется ли для этого вторую программу компилировать особым образом?
-
Если вторая программа должна всегда работать с повышенными привилегиями, то её нужно компилировать со специфическим манифестом (XE2 позволяет прямо в среде изменять манифест для запуска всегда с повышенными привилегиями).
Если же нужно именно из одной программы вызывать вторую с повышенными привилегиям, то используется недокументированная возможность использовать в ShellExecute в качестве verb 'RunAs'.
А лучше забей в поисковик "UAC+Delphi" и осмысли найденное.
-
Здравствуйте
Воспользовался Вашей рекомендацией использовать в ShellExecute в качестве verb 'RunAs'.
Сработало. Большое спасибо
-
> недокументированная возможность использовать в ShellExecute
> в качестве verb 'RunAs'
чойта вдруг недокументированная? все элементарно по аналогии
-
> чойта вдруг недокументированная?
Потому что в официальной документации verb RunAS отсутствует.
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762153(v=vs.85).aspx и если он после очередного патча перестанет работать, то будет уже по совсем не элементарно ;)
Ну и я уж не говорю, что для отключения данного функционала достаточно удалить или переименовать следующую ветку реестра: HKEY_CLASSES_ROOT\exefile\shell\runas
-
> Потому что в официальной документации verb RunAS отсутствует.
ну зато там написано вполне конкретно "This method allows you to execute any commands in a folder's shortcut menu or stored in the registry"
а этих вербов может быть созданно вагон и тележка любым пользователем или программой
> Ну и я уж не говорю, что для отключения данного функционала
ну заодно уж нескажи что можно также прибить и "open" и "explore" и "edit" и дт
> после очередного патча перестанет работать
в часности там написано что если не существует "open" (которы описан и по твоей теории о патчах будет жить вечно)
то используется первый по порядку верб из реестра
зы твоя ссылка некашерна по причине что там в минимале стоит ХР (кури старинный MSDN)
а ShellExecute существует сама и ее описание с 95\NT3.1 винды, и поэтому описаны вербы, которые общие как для NT так и 9x систем
-
Чет я не понял.
Уточни плз место в твоем мегоспиче, где ты все-же указываешь на то, что сей момент есть вполне документирован.
Далее:
> зы твоя ссылка некашерна по причине что там в минимале стоит ХР
Это видимо указывает на то, что все что в W2K уже не работает?
> а ShellExecute существует сама и ее описание с 95\NT3.1
> винды, и поэтому описаны вербы, которые общие как для NT
> так и 9x систем
Открой глаза мне бразе :) Дай линк на verb RunAS описанный в 95\NT3.1
-
> ну заодно уж нескажи что можно также прибить и "open" и
> "explore" и "edit" и дт
Ой, пардон, забыл - пичаль мне :)
Ты знаешь, нет, их так-же прибить нельзя, не буду говорить :)
-
> Уточни плз место в твоем мегоспиче
первая строка
> Открой глаза мне бразе
это о том почему его там нет
-
Ниче не понял - точное место плз документации RunAs покажи...
Ты где здесь его нашел то?
"This method allows you to execute any commands in a folder's shortcut menu or stored in the registry"
То что ShellExecute выполняет все подряд зарегенное это не есть наличие факта документированности :)
-
Зы, даю подсказку, вот например для шорткутов есть документированный флаг SLDF_RUNAS_USER, а для ShellExecute ???
-
> их так-же прибить нельзя
можно
> это не есть наличие факта документированности
а по мне, так достаточно
-
> robt (25.05.12 22:12) [11]
> можно
По тому-же ключу реестра? Сурово.
> robt (25.05.12 22:12) [11]
> а по мне, так достаточно
Ну так с этого и начинать надо было :)
Фраза "а по мне" обычно пишется как "IMHO", которым обычно предваряют текст, в котором автор не до конца уверен :)
-
> Rouse_ (25.05.2012 19:59:04) [4]
“Verb” может быть любой, в том числе и пользовательский. Выбираться должен
из shortcut меню, особо оговорен случай когда “Verb” отсутствует, включая
“Verb” “Open”
Описаны, наиболее используемые случаи “The following verbs are commonly
used:” список
Так же могут использовать алиасы – совсем не описаны.
-
> Anatoly Podgoretsky © (25.05.12 22:20) [13]
Толь ну тебя-то куда понесло? :)
Нешто ты выдумал шо я англицкую мову ни розумею и справку читать не обучен? :)
-
-
> Rouse_ (25.05.2012 22:23:14) [14]
А может ты не так интерпретируешь написанное, иначе чего споришь то?
-
> robt (25.05.12 22:27) [15]
> ну не тупи, ты все понял
я реально хочу знать что именно я понял по реестру :)
> почитай например ремарку к http://msdn.microsoft.com/en-
> us/library/windows/desktop/bb762138(v=vs.85).aspx
Молодец - нашел :)
-
> Anatoly Podgoretsky © (25.05.12 22:44) [16]
> > Rouse_ (25.05.2012 22:23:14) [14]
>
> А может ты не так интерпретируешь написанно
Толь зачем ты мне задаешь такой вопрос?
Ну открой написанное, найди где я его неправильно интерпретировал, делов то...