Вызов программы с запросом на права администратора - VB
Формулировка задачи:
Собственно, из основной программы вызываются вспомогательные программы, которым требуются права администратора
Но, почему то для одной программы окошко с запросом прав выскакивает, а для другой нет
Вот думаю, что делать? Вызывать программы с помощью CreateProcess?
Как прикрутить к ShellExecuteEx айпишку ожидания - WaitForSingleObject ? голова кругом уже идет...
как можно просто заставить ехе-шник требовать права администратора при запуске? (естественно в самом ехе-шнике)
// нужно не только вызвать запросив права администратора, но и дождаться заверешния
Пытался нагуглить по поводу записей в реестре об запросах прав
Вот что нашел, но так и не понял как использовать...
помогите нубу
Спойлер
Не по теме:
я надеюсь ссылки на другие форумы данной тематики не являются рекламой?
Решение задачи: «Вызов программы с запросом на права администратора»
textual
Листинг программы
Option Explicit
Sub Main()
MsgBox "Run"
Call CheckUAC
'main routine ...
End Sub
Private Sub CheckUAC()
Dim colOS, oOS, strOSLong, oShellApp
Set colOS = GetObject("winmgmts:\root\cimv2").ExecQuery("Select * from Win32_OperatingSystem")
For Each oOS In colOS
strOSLong = oOS.Version
Next
If Left(strOSLong, 1) = "6" Then
If Not isAdminRights Then
Set oShellApp = CreateObject("Shell.Application")
oShellApp.ShellExecute App.Path & "\" & App.EXEName & ".exe", "", "", "runas", 1
End
End If
End If
End Sub
Function isAdminRights()
Const HKCU = &H80000001, HKLM = &H80000002, KQV = &H1, KSV = &H2
Dim oReg, strKey, intErrNum, flagAccess
Set oReg = GetObject("winmgmts:root\default:StdRegProv")
strKey = "System\CurrentControlSet\Control\Session Manager"
intErrNum = oReg.CheckAccess(HKLM, strKey, KQV + KSV, flagAccess)
isAdminRights = flagAccess
MsgBox isAdminRights
End Function