нашел функцию, где с помощью win api, можно запустить программу с правами администратора.
PHP код:
Procedure.i LaunchAndElevate(Exe.s,Parameters.s="")
Protected ExecFile.SHELLEXECUTEINFO
If Exe = ""
Exe = ProgramFilename()
EndIf
ExecFile\cbSize = SizeOf(ExecFile)
ExecFile\fMask = #Null
ExecFile\hwnd = GetDesktopWindow_()
ExecFile\lpVerb = @"runas"
ExecFile\lpFile = @Exe
ExecFile\lpParameters = @Parameters
ExecFile\lpDirectory = #Null
ExecFile\nShow = #SW_NORMAL
ExecFile\hInstApp = #Null
ProcedureReturn ShellExecuteEx_(ExecFile)
EndProcedure
код правда под PureBasic - но суть думаю понятна
на прочих языках, дружащих с winapi будет примерно тот-же год.
все здорово, однако один минус - окно подтверждения запуска, ну то где весь экран темнеет и вылазит диалог "вы согласны запустить бла бла бла?" - так вот оно запускается в свернутом виде. и естественно на этот процесс этого служебного сообщения consent.exe понавешаны всякие хуки и я не могу передать фокус этому окну. на всякие блокноты да нотепады - без проблем, а этот скатина не дается
ну да ладно... запуск с правами администратора это пол белы, вторая проблема как бы запускать помимо прав администратора еще в режиме совместимости с XPSP3?
правка реестра не подходит. я имею ввиду добавление нужного ехе и добавления ему флагов прав администратора и совместимости. после такого "дописывания" из моей программы, даже с правами администратора, искомый ехе не хочет запускаться с этими режимами. при просмотре свойств ехе - галки прав и совместимости есть, но на иконке ехе файла нет значка безопасности и он запускается под обычными правами. видимо помимо правки реестра нужно еще что-то делать, чтобы дать понять системе как именно запускать данный ехешник. поэтому ищу способ запуска, аналогично приведенной выше функции, но с еще флагом совместимости... и повозможности с развернутым consent.exe, чтобы это диалог был в фокусе, а не как у меня в свернутом виде...