NoUAC - Benutzerkontensteuerungs-Abfrage umgehen

Veröffentliche deine funktionierenden Skripte und Funktionen

Moderator: jNizM

User avatar
moefr01
Posts: 115
Joined: 25 Nov 2015, 09:01
Location: Germany

NoUAC - Benutzerkontensteuerungs-Abfrage umgehen

25 Nov 2015, 09:27

Hallo liebe AHKler,

da ich diese lästige Benutzerkontenabfrage unter Windows 7-10 so ziemlich satt hatte, aber nicht ausschalten wollte, habe ich mich einmal mit der Aufgabenplanung verfasst. Hier fand ich recht schnell eine Lösung zur Erzeugung einer eigenen Verknüpfung zu x-beliebigen ausführbaren Dateien, welche diese OHNE Abfrage startet. Mit NoUAC.ahk erzeugt man nach Eingabe des Aufgabennamens (taskname) und der Pfadauswahl des zu startenden Programms eine Verknüpfung (mit Programmicon 1) auf dem Desktop. Diese Verknüpfung zeigt auf schtasks.exe und nutzt die Parameter /RUN /TN und wird minimiert und kommentiert gespeichert. :P
Das kompilierte NoUAC.ahk kann man nach o.g. Methode natürlich ebenfalls "verknüpfen" und erfreut sich dann an direkt-startenden Anwendungen...

Freue mich sehr über Anregungen und konstruktive Kritik... :wave:
moefr01
NoUAC.ahk
(2.19 KiB) Downloaded 511 times
CODE:

Code: Select all

#NoTrayIcon
#SingleInstance force
if not A_IsAdmin
{
   Run *RunAs "%A_ScriptFullPath%"
   ExitApp
}

Gui, Add, Text, x10 y10 w320 h40 vText0, NoUAC - Erstellen Sie im Handumdrehen eine Verknüpfung zu Anwendungen ohne lästige Abfrage der Benutzerkontensteuerung beim Ausführen.
Gui, Add, Text, x10 y76 vText1, Aufgabenname:
Gui, Add, Edit, x90 y72 w250 h20 vEingTaskname
Gui, Add, Text, x10 y102 vText2, Anwendung:
Gui, Add, Edit, x90 y98 w220 h20 vEingProgrammpfad
Gui, Add, GroupBox, x10 y130 w330 h160 vGroup1 BackgroundTrans,
Gui, Add, Picture, x20 y150 w48 h48 vIcon,
Gui, Add, Text, x20 y200 w310 h80 vAusgabe,
Gui, Add, Button, x310 y97 h22 w30 vfsButton gfsButton, ...
Gui, Add, Button, x200 y298 w140 vErstellenButton gErstellenButton, Verknüpfung erstellen...
Gui, Show, w350 h130, NoUAC
Return

; Dateiauswahldialog starten
fsButton:
FileSelectFile, programmpfad, 1, , Bitte ausführbare Datei auswählen:, Ausführbare Datei (*.exe)
GuiControl, , EingProgrammpfad, %programmpfad%
GuiControl, , Icon, %programmpfad%
GuiControlGet, taskname, , EingTaskname
taskname0 = %taskname%
taskname = "%taskname%"
GuiControlGet, programmpfad, , EingProgrammpfad
programmpfad0 = %programmpfad%
programmpfad = "%programmpfad%"

; Formatierungen
Ausgabetext = Verknüpfung:`n%A_Desktop%\%taskname0%`n`nPfad:`n%Windir%\System32\schtasks.exe /RUN /TN %taskname%
GuiControl, , Ausgabe, %Ausgabetext%
Gui, Show, w350 h330, NoUAC
Return

ErstellenButton:
If (taskname0 = "") or (programmpfad0 = "") {
  MsgBox, , ACHTUNG!, Es wurden keine Eingaben gemacht oder eine Verknüpfung bereits erstellt.
  Return
  }
; erstellt Verknüpfung auf dem Desktop: minimiert, erstes Icon von exe, mit Tasknamen
FileCreateShortcut, "%Windir%\System32\schtasks.exe", %A_Desktop%\%taskname0%.lnk, , /RUN /TN %taskname%, ...erstellt am %A_DD%.%A_MM%.%A_YYYY%, %programmpfad0%, , , 7
; erstellt Aufgabe in der Aufgabenplanung
Run, %Windir%\system32\schtasks.exe /create /sc beimstart /tn %taskname% /tr %programmpfad% /rl höchste
GuiControl, , EingTaskname
GuiControl, , EingProgrammpfad
taskname0 =
programmpfad0 =
Return

GuiClose:
ExitApp
Last edited by jNizM on 26 Nov 2015, 01:45, edited 1 time in total.
Reason: Bitte zukünftig [code][/code] Tags benutzen =)
Best-Code-in-Use
Posts: 184
Joined: 01 Dec 2015, 05:13
Location: Germany

Vielen Dank: NoUAC - Benutzerkontensteuerungs-Abfrage umgehen

02 Dec 2015, 18:25

Wow, eine Super Idee, vielen Dank.

Ich habe bisher immer einen Unterordner in der Aufgabenplanung angelegt.
(C:\WINDOWS\System32\Tasks\Benutzeraufgaben)
Das erhöht die Übersicht...

Gibt es eine Möglichkeit den Task auch gleich in einem speziellen Unterordner anzulegen? Also zum Beispiel /Benutzeraufgaben?
Greetings Best-Code-in-Use
User avatar
moefr01
Posts: 115
Joined: 25 Nov 2015, 09:01
Location: Germany

Re: NoUAC - Benutzerkontensteuerungs-Abfrage umgehen

04 Dec 2015, 04:39

Hallo Best-Code-in-Use

lässt sich einfach umsetzen: :D

Bitte folgende Zeile:

Code: Select all

taskname = "%taskname%"
durch diese ersetzen:

Code: Select all

taskname = "Benutzeraufgaben\%taskname%"
und falls der Wunsch-Ordner (Benutzeraufgaben) noch nicht existiert (siehe taskschd.msc), wird er automatisch angelegt inklusive der Aufgabe. :bravo:

Viel Spass... :wave:
moefr01
User avatar
moefr01
Posts: 115
Joined: 25 Nov 2015, 09:01
Location: Germany

Re: NoUAC - Benutzerkontensteuerungs-Abfrage umgehen

08 Dec 2015, 07:31

Hallo AHKler,
anbei eine Variante, bei der man noch einen Ordnernamen angeben kann ( ;) Best-Code-in-Use). Bei Eingabe eines Ordnernamens wird dieser in der Hierarchie unter der Aufgabenplanungsbibliothek angezeigt mit Inhalt Aufgabenname. Falls man keinen Ordnernamen definiert, wird die Aufgabe direkt unter der Aufgabenplanungsbibliothek angelegt. Ordnernamen stets ohne Sonderzeichen wie \,;:*/|~.

Code: Select all

#NoTrayIcon
#SingleInstance force ; wichtig, damit die alte Instanz ohne Nachfrage beendet wird
if not A_IsAdmin
{
   Run *RunAs "%A_ScriptFullPath%"
   ExitApp
}

Gui, Add, Text, x10 y10 w320 h40 vText, NoUAC - Erstellen Sie im Handumdrehen eine Verknüpfung zu Anwendungen ohne lästige Abfrage der Benutzerkontensteuerung beim Ausführen.
Gui, Add, Text, x100 y50 vText0, Aufgabenordner:
Gui, Add, Edit, x190 y46 w150 h20 vEingOrdner
Gui, Add, Text, x10 y76 vText1, Aufgabenname:
Gui, Add, Edit, x90 y72 w250 h20 vEingTaskname
Gui, Add, Text, x10 y102 vText2, Anwendung:
Gui, Add, Edit, x90 y98 w220 h20 vEingProgrammpfad
Gui, Add, GroupBox, x10 y130 w330 h160 vGroup1 BackgroundTrans,
Gui, Add, Picture, x20 y150 w48 h48 vIcon,
Gui, Add, Text, x20 y200 w310 h80 vAusgabe,
Gui, Add, Button, x310 y97 h22 w30 vfsButton gfsButton, ...
Gui, Add, Button, x200 y298 w140 vErstellenButton gErstellenButton, Verknüpfung erstellen...
Gui, Show, w350 h130, NoUAC
Return

; Dateiauswahldialog starten
fsButton:
FileSelectFile, programmpfad, 1, , Bitte ausführbare Datei auswählen:, Ausführbare Datei (*.exe)
GuiControl, , EingProgrammpfad, %programmpfad%
GuiControl, , Icon, %programmpfad%
GuiControlGet, taskname, , EingTaskname
GuiControlGet, ordnername, , EingOrdner
taskname0 = %taskname%
taskname = "%ordnername%\%taskname%"
GuiControlGet, programmpfad, , EingProgrammpfad
programmpfad0 = %programmpfad%
programmpfad = "%programmpfad%"

; Formatierungen
Ausgabetext = Verknüpfung:`n%A_Desktop%\%taskname0%`n`nPfad:`n%Windir%\System32\schtasks.exe /RUN /TN %taskname%
GuiControl, , Ausgabe, %Ausgabetext%
Gui, Show, w350 h330, NoUAC
Return

ErstellenButton:
If (taskname0 = "") or (programmpfad0 = "") {
  MsgBox, , ACHTUNG!, Es wurden keine Eingaben gemacht oder eine Verknüpfung bereits erstellt.
  Return
  }
; erstellt Verknüpfung auf dem Desktop: minimiert, erstes Icon von exe, mit Tasknamen
FileCreateShortcut, "%Windir%\System32\schtasks.exe", %A_Desktop%\%taskname0%.lnk, , /RUN /TN %taskname%, ...erstellt am %A_DD%.%A_MM%.%A_YYYY%, %programmpfad0%, , , 7
; erstellt Aufgabe in der Aufgabenplanung
Run, %Windir%\system32\schtasks.exe /create /sc beimstart /tn %taskname% /tr %programmpfad% /rl höchste
GuiControl, , EingOrdner
GuiControl, , EingTaskname
GuiControl, , EingProgrammpfad
taskname0 =
programmpfad0 =
Return

GuiClose:
ExitApp
Viel Spaß :wave:
moefr01
Best-Code-in-Use
Posts: 184
Joined: 01 Dec 2015, 05:13
Location: Germany

Vielen Dank: NoUAC - Benutzerkontensteuerungs-Abfrage umgehen

09 Dec 2015, 03:13

@moefr01

Vielen Dank für die Hilfe, das ist genial....
Somit erspart man sich ja einiges an Tipparbeit und erhöht gleichzeitig auch die Übersicht in der Aufgabenplanung.
Werde es nachher direkt mal an einem Windows 10 Rechner testen.

Ich wünsche noch einen schönen Tag...
Greetings Best-Code-in-Use
User avatar
moefr01
Posts: 115
Joined: 25 Nov 2015, 09:01
Location: Germany

Re: NoUAC - Benutzerkontensteuerungs-Abfrage umgehen

05 Mar 2017, 09:58

TIPP:
Mir ist aufgefallen, dass die NoUAC-erstellte Verknüpfung auf Notebooks nicht ausgeführt wird, wenn diese mit Akkustrom laufen... ergo bei Registerkarte [Bedingungen] in der Aufgabenbibliothek/meine Aufgabe nachträglich den Haken entfernt:
Aufgabe nur starten, falls Computer im Netzbetrieb ausgeführt wird

:wave: moefr01
User avatar
moefr01
Posts: 115
Joined: 25 Nov 2015, 09:01
Location: Germany

Re: NoUAC - Benutzerkontensteuerungs-Abfrage umgehen

13 Mar 2017, 11:38

@AHKler
hinsichtlich der nachträglichen Anpassung für Notebooknutzer bei Akkustromnutzung habe ich eine Lösung gefunden:
Der Trick besteht darin eine XML-Datei mit der gewünschten Parametrisierung (false/true) zu erstellen und diese anschl. per schtasks /create auszuführen. Dabei werden die Bedingungen für DisallowStartIfOnBatteries in der Aufgabe überschrieben. Das klappt auch bei der Ordnererstellung von NoUAC. Ebenso ist die Bedingung StopIfGoingOnBatteries gleichwertig (false/true) gesetzt, bei der Radiobutton-Auswahl.
Getestet bisher nur unter Windows 10 x64 1607.14393.693... freue mich über jede konstruktive Kritik und Verbesserungsvorschläge.

:wave: moefr01

NoUAC v1.10 vom 13.03.2017 16:33

Code: Select all

; ===============================================================================================================================
; Title .........: NoUAC
; AHK Version ...: 1.1.25.01 x64 Unicode
; Win Version ...: Windows 10 Professional x64 / 1607 Build 14393.693
; Description ...: erstellt eine Verknüpfung auf dem Desktop ohne lästige Abfrage der Benutzerkontensteuerung beim Ausführen
; Version .......: v1.10
; Modified ......: 2017-03-13 16:33
; Author(s) .....: moefr01
; ===============================================================================================================================
#NoTrayIcon
#SingleInstance force
if not A_IsAdmin
{
   Run *RunAs "%A_ScriptFullPath%"
   ExitApp
}

Gui, Add, Text, x10 y10 w320 h40 vText, NoUAC - Erstellen Sie im Handumdrehen eine Verknüpfung zu Anwendungen ohne lästige Abfrage der Benutzerkontensteuerung beim Ausführen.
Gui, Add, Text, x10 y80, Bei Nutzung mit Akkustrom (Notebook):
Gui, Add, Radio, x210 y80 vRadio0 gRadio Checked, aktiv
Gui, Add, Radio, x258 y80 vRadio1 gRadio, inaktiv
Gui, Add, Text, x100 y116 vText0, Aufgabenordner:
Gui, Add, Edit, x190 y112 w150 h20 vEingOrdner
Gui, Add, Text, x10 y144 vText1, Aufgabenname:
Gui, Add, Edit, x90 y140 w250 h20 vEingTaskname
Gui, Add, Text, x10 y172 vText2, Anwendung:
Gui, Add, Edit, x90 y168 w220 h20 vEingProgrammpfad
Gui, Add, GroupBox, x10 y200 w330 h160 vGroup1 BackgroundTrans,
Gui, Add, Picture, x20 y220 w48 h48 vIcon,
Gui, Add, Text, x20 y270 w310 h80 vAusgabe,
Gui, Add, Button, x310 y167 h22 w30 vfsButton gfsButton, ...
Gui, Add, Button, x200 y368 w140 vErstellenButton gErstellenButton, Verknüpfung erstellen...
Gui, Show, w350 h200, NoUAC
batterystop:="false"
Return

Radio:
GuiControlGet, aktiv, , Radio0
If (aktiv)
  batterystop:="false"
Else
  batterystop:="true"
Return

; Dateiauswahldialog starten
fsButton:
FileSelectFile, programmpfad, 1, , Bitte ausführbare Datei auswählen:, Ausführbare Datei (*.exe)
GuiControl, , EingProgrammpfad, %programmpfad%
GuiControl, , Icon, %programmpfad%
GuiControlGet, taskname, , EingTaskname
GuiControlGet, ordnername, , EingOrdner
taskname0 = %taskname%
taskname = "%ordnername%\%taskname%"
GuiControlGet, programmpfad, , EingProgrammpfad
programmpfad0 = %programmpfad%
programmpfad = "%programmpfad%"

; Formatierungen
Ausgabetext = Verknüpfung:`n%A_Desktop%\%taskname0%`n`nPfad:`n%Windir%\System32\schtasks.exe /RUN /TN %taskname%
GuiControl, , Ausgabe, %Ausgabetext%
Gui, Show, w350 h400, NoUAC
Return

ErstellenButton:
If (taskname0 = "") or (programmpfad0 = "") {
  MsgBox, , ACHTUNG!, Es wurden keine Eingaben gemacht oder eine Verknüpfung bereits erstellt.
  Return
  }
; erstellt Verknüpfung auf dem Desktop: minimiert, erstes Icon von exe, mit Tasknamen
FileCreateShortcut, "%Windir%\System32\schtasks.exe", %A_Desktop%\%taskname0%.lnk, , /RUN /TN %taskname%, ...erstellt am %A_DD%.%A_MM%.%A_YYYY%, %programmpfad0%, , , 7
; erstellt Aufgabe in der Aufgabenplanung
Run, %Windir%\system32\schtasks.exe /create /sc beimstart /tn %taskname% /tr %programmpfad% /rl höchste, , hide

Sleep, 500
userid:=A_ComputerName "\" A_UserName
FileDelete, %taskname0%.xml
FileAppend,
(
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <URI>\fmwSystemImager</URI>
  </RegistrationInfo>
  <Principals>
    <Principal id="Author">
      <UserId>%userid%</UserId>
      <LogonType>InteractiveToken</LogonType>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>%batterystop%</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>%batterystop%</StopIfGoingOnBatteries>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>%programmpfad%</Command>
    </Exec>
  </Actions>
</Task>
), %taskname0%.xml

RunWait, %Windir%\system32\schtasks.exe /create /xml %taskname0%.xml /tn %taskname% /f, , hide
MsgBox, 0x40, , Die %taskname0%-Verknüpfung zu %programmpfad% wurde erfolgreich auf dem Desktop angelegt.
GuiControl, , EingOrdner
GuiControl, , EingTaskname
GuiControl, , EingProgrammpfad
FileDelete, %taskname0%.xml
taskname0 =
programmpfad0 =
Return

GuiClose:
ExitApp
Best-Code-in-Use
Posts: 184
Joined: 01 Dec 2015, 05:13
Location: Germany

Vielen Dank, einfach genial...

15 Mar 2017, 04:27

Hallo moefr01,

vielen Dank für Deine Mühe.
Das sieht sehr gut aus, ich habe nur die GUI ein wenig kosmetisch verändert, vielleicht gefällt es Dir ja auch... :D :D

Ohne Deine geniale Arbeit wäre das allerdings nicht möglich gewesen, Top!!!
NoUAC---mit-Ordnerauswahl--Mod-2017-03.ahk
No UAC Gui Change
Greetings Best-Code-in-Use
User avatar
moefr01
Posts: 115
Joined: 25 Nov 2015, 09:01
Location: Germany

Re: NoUAC - Benutzerkontensteuerungs-Abfrage umgehen

16 Mar 2017, 10:01

@Best-Code-in-Use
nicht der Rede wert... ;) habe ich gerne gemacht (brannte mir irgendwie auf den Fingern!)

Deine semantische Anpassung gefällt mir sehr gut, manchmal steht man irgendwie auf'm Schlauch vor lauter Coding und findet einfach nicht die treffenden Strings :think: ...danke.
Deshalb ein großes Lob an dich und dieses Super-Forum :clap:
Best-Code-in-Use
Posts: 184
Joined: 01 Dec 2015, 05:13
Location: Germany

Gerne...

16 Mar 2017, 17:47

Hallo moefr01,
...manchmal steht man irgendwie auf'm Schlauch vor lauter Coding und findet einfach nicht die treffenden Strings
Ja, das kenne ich, passiert mir auch gerne... :wtf:
Schön wenn es gefällt! Ist wirklich ein tolles Forum hier... :D :D
Greetings Best-Code-in-Use
Filzfrosch
Posts: 64
Joined: 18 Feb 2017, 08:39
Location: Hamburg / Germany

Re: NoUAC - Benutzerkontensteuerungs-Abfrage umgehen

27 Jan 2021, 13:41

Moin,

ist zwar zwar schon ein älterer Thread, aber trotzdem echt cool.
Allerdings erhielt ich erst den Fehler
image.png
image.png (5.12 KiB) Viewed 3908 times

Es funktioniert für mich, wenn ich diesen Part

Code: Select all

if not A_IsAdmin
{
   Run *RunAs "%A_ScriptFullPath%"
   ExitApp
}
hiermit ersetze:

Code: Select all

if not A_IsAdmin
{
   Run *RunAs "%A_AhkPath%" "%A_ScriptFullPath%"
   ExitApp
}
Danke für ein sehr nützliches Tool!
Merry Crisis and a happy new fear
User avatar
moefr01
Posts: 115
Joined: 25 Nov 2015, 09:01
Location: Germany

Re: NoUAC - Benutzerkontensteuerungs-Abfrage umgehen

30 Jan 2021, 09:38

Moin Filzfrosch,
Dankeschön für deine Lösung ... für etwaige Probleme mit dem AHK-Pfad ist allen Betroffenen damit sicherlich geholfen, bzw. macht den Code „stabiler“. :bravo:

Return to “Skripte und Funktionen”

Who is online

Users browsing this forum: No registered users and 17 guests