Adminrechte für WinMove

  • Hallole Zusammen,

    jetzt bin ich geplättet: seit neuestem muss mein Script mit Adminrechten ausgeführt werden, damit es Winmove() ausführt.
    Starte ich das Script im SciTE mit F5 ohne Admin werden die Fenster nicht verschoben. Das gleiche gilt, wenn ich das Script kompiliere
    und als *.exe starte. Es wird die *.exe zwar ausgeführt aber die Winmove-Funktionen nicht, d.h. die Fenster werden nicht verschoben.

    Hat jemand eine Idee wieso WinMove() erhöhte Rechte benötigt?

    Spoiler anzeigen

    ; Das Programm soll nur bestimmte Fenster an eine definierte Position verschieben.
    Es kann mit Parameter(die Handles der zu verschiebenden Fenster) aus einer anderen Anwendung heraus gestartet werden oder als Standalone-Version.

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****

    #AutoIt3Wrapper_Outfile_x64=WindowReposit.exe

    #AutoIt3Wrapper_Res_Fileversion=1.0.0.16

    #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y

    #AutoIt3Wrapper_Res_LegalCopyright=2018 by HaSc

    #AutoIt3Wrapper_Res_Language=1031

    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****


    #include <AutoItConstants.au3>

    #include <WindowsConstants.au3>

    #include <Array.au3>

    #include <Misc.au3>

    If $CmdLine[0] > 0 then

    Global $hWnd = $CmdLine[0] ; ist die Anzahl der Parameter der übergebenen Handles der Keepass-Fenster

    Global $hWnd1 = HWnd($CmdLine[1]) ; ist Parameter 1

    Global $hWnd2 = HWnd($CmdLine[2]) ; ist Parameter 2

    Global $hWnd3 = HWnd($CmdLine[3]) ; ...

    ;Local $aPos = WinGetPos("AdminTool by HS 2017")

    ;_ArrayDisplay($apos, "1D display")

    WinMove("AdminTool by HS 2017", "", 2963, 1, 450, 480)

    Sleep(200)

    WinMove("Standard", "", 1914, 0, 1042, 1073)

    Sleep(300)

    WinSetState("Standard", "", @SW_MINIMIZE)

    Sleep(100)

    WinMove($hWnd1, "Bla.kdbx - KeePass", 2728, 493, 450, 580)

    Sleep(200)

    WinMove($hWnd2, "Bla.kdbx - KeePass", 2963, 493, 450, 580)

    Sleep(200)

    WinMove($hWnd3, "Bla.kdbx - KeePass", 3270, 493, 450, 580)

    Sleep(200)

    WinMove("Skype for Business", "", 3432, 1, 402, 1065)

    sleep(200)

    exit

    Else

    Local $aWinList = WinList("[REGEXPTITLE:(?i)(Bosch.*Keepass*)]") ; Winlist erstellt eine Liste aller geöffneten Fenster und dann wird Array nach Indizes mit Namen Keepass gefiltert

    Global $hWnd1 = $aWinList[1][1] ; ist Parameter 1

    Global $hWnd2 = $aWinList[2][1] ; ist Parameter 2

    Global $hWnd3 = $aWinList[3][1] ;

    WinMove("AdminTool by HS 2017", "", 2963, 1, 450, 480)

    Sleep(200)

    WinMove("Standard", "", 1914, 0, 1042, 1073)

    Sleep(300)

    WinSetState("Standard", "", @SW_MINIMIZE)

    Sleep(300)

    WinMove($hWnd1, "Bla.kdbx - KeePass", 2728, 493, 450, 580)

    Sleep(300)

    WinMove($hWnd2, "bla.kdbx - KeePass", 2963, 493, 450, 580)

    Sleep(300)

    WinMove($hWnd3, "bla.kdbx - KeePass", 3270, 493, 450, 580)

    Sleep(300)

    WinMove("Skype for Business", "", 3432, 1, 402, 1065)

    sleep(200)

    exit


    EndIf

  • Nur eine Idee : In welchen Ordner verschiebst Du denn das (die) Verzeichnis(se) ?

    Werden auch erhöhte Rechte angefordert, wenn Du z.B. von c:\temp nach c:\temp2 verschiebst ?

    EDIT :

    Sorry, nicht genau gelesen - ich hatte DirMove im Kopf :Face: .

    Hat jemand eine Idee wieso WinMove() erhöhte Rechte benötigt?

    EDIT : hipfzwirgel

    Das Verhalten ist nicht neu, siehe z.B. winmove-does-not-work-under-some-circumstances

    Kurzfassung :

    WinMove("AdminTool by HS 2017", "", 2963, 1, 450, 480)

    Offenbar versuchst Du das Fenster eines mit Adminrechten bereits gestarteten Programms mit einem AutoIt-Skript zu verschieben, welches nicht über Adminrechte verfügt.

    Daher ist hier #RequireAdmin erforderlich.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    4 Mal editiert, zuletzt von Musashi (4. November 2022 um 17:34)

  • Hallo Musashi,

    vielen lieben Dank für deine Erklärung. Jetzt würde es mich aber dennoch interessieren, wieso WinMove überhaupt erhöhte Rechte benötigt.
    schließlich kann ich ja die Fenster, egal ob das zugrundeliegende Programm mit oder ohne Adminrechte gestartet wurde mit der Maus
    beliebig verschieben, ohne dass Elevation eine Rolle spielt, bzw. die UAC einschreitet?

    Hat jemand dazu eine Erklärung?

  • Naja,

    über welche Win Version sprechen wir?

    Und so pauschal würde meine Antwort wohl als Schimpftriade über Windos (10) und UAC im Allgemeinen enden.

    By the way. Versuch mal UAC abzuschalten - geht es dann?

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Hallo Peter,

    es geht um Win 10 21H2. ich frage nur, weil das bisher immer funktioniert hat und auf einmal eben nicht mehr.
    Für mich macht eine Elevation nur zum Fensterverschieben i-wie keinen Sinn. UAC abschalten geht nicht, da es sich um einen Firmen-Rechner handelt.

    Es interessiert mich eigentlich ob jemand weiss, was sich da geändert haben könnte und das plötzlich die UAC sich da einmischt.

  • Kannst Du das UAC wenigstens probehalber mal abschalten - dann könnte man feststellen ob es tatsächlich das UAC ist - oder ob man an anderer Stelle suchen muss?

    Gruss

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Hallo Peter S. Taler,

    leider kann ich das nicht abschalten (Group-Policies, etc.) aber das ist auch nicht mehr nötig. Warum auch immer, geht es jetzt seit 2 Tagen wieder.
    Keine Ahnung was das gewesen sein könnte. Ich schließe den Post da sich das Prob von alleine erledigt hat...