Hallo @ALL
Ich möchte ein Programm das ohne #RequireAdmin im Script im Usermode läuft. Mit einem Butten soll dann die Aufforderung kommen Username und Password einzugeben, das Programm soll sich selbst restarten und dann mit Adminrechte ausgeführt werden. Am liebsten wäre mir die UAC, aber ich weiß nicht wie man einen Programmaufruf dazu bringt die UAC auszugeben, so das das gleich Programm mit Adminrechte läuft.
Das soll optisch dann so aussehen:
Das wäre jetzt der Usermode und mit dem Klick auf "Admin" soll das
Programm (mit UAC) neu gestaret werden und dann erhöhte Rechte haben.
Bis jetzt habe ich ein kleines Testprogramm das auch keinen gewünschten Erfolg brachte:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=Icons\0472.ico
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
;Test: Restart with Adminrights
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
local $Form1 = GUICreate("Form1", 185, 130, 853, 202)
local $Button1 = GUICtrlCreateButton("Button1", 45, 25, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
local $nMsg
local $update_program
local $user
local $pw
local $pid
MsgBox ("", "", "IsAdmin: " & IsAdmin ())
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
if @Compiled = 0 then
ConsoleWrite ('$user, @LogonDomain, $pw, $RUN_LOGON_NOPROFILE, "@ScriptFullPath"' & @CRLF)
Else
$user = InputBox ("Adminaccount", "Username", "")
$pw = InputBox ("Adminaccount", "Username", "", "*")
$pid = RunAs ($user, @LogonDomain, $pw, $RUN_LOGON_NOPROFILE, @ScriptFullPath, "")
sleep (1000)
Exit
EndIf
EndSwitch
WEnd
Alles anzeigen
Mit RunAs User & Passwort wird das Programm zwar korrekt unter dem User gestartet, aber ohne Adminrechte
Ich habe auch den Betrag RE: 'Run' führt Exe NICHT aus die Adminrechte benötigt, 'ShellExecute' tut's gefunden, hilft mir aber auch nicht weiter da Shellexecute keinen Usernamen/PW zulässt.
Der kleine Trick mit set __COMPAT_LAYER=RunAsAdmin funktioniert auch nicht!
Was natülich geht ist das Programm mit "rechter Maustaste" -> als Administrator ausführen. Ist halt nicht elegant
Vielleicht hat hier wer eine Idee oder gar eine Lösung.
lg
Racer