Вызов программы с запросом на права администратора - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д