Zum Verständnis:
Mein Skript wird mit einem Hotkey aktiviert und via Tasten (input-Befehl) werden Details des Skriptes ausgeführt, z.B. Fremd-Fenster verschieben.
Das Fenster bleibt dabei aktiv, nur der Tastaturfokus geht durch den erwähnten Input Befehl kurzfristig an mein Skript über.
Das funktioniert auch wunschgemäß, außer wenn der, zum Fremd-Fenster gehörende Prozess, höhere Rechte hat, wie die Rechte mit denen mein Skript gestartet wurde. D.h. bei höheren Rechten bekommt mein Skript von den Tastatur-Eingaben nichts mehr mit. Wenn dann das Admin-Fenster beispielsweise geschlossen wird, wartet der Input Befehl noch auf Tasten, was der Benutzer meist schon vergessen hat ...
P.S. Admin Rechte stehen den Benutzern meines Skriptes im allgemeinen nicht zur Verfügung.
Nun zu meinem eigentlichen Anliegen:
wie finde ich via Skript heraus, mit welchen Rechten das aktive Fremd-Fenster arbeitet? Damit ich rechtzeitig darauf reagieren kann.
Hat aktives Fenster höhere Rechte wie das AHK Skript?
Moderator: jNizM
Hat aktives Fenster höhere Rechte wie das AHK Skript?
https://github.com/Grrdi/ZackZackOrdner/archive/master.zip --> get folders on the quick
Re: Hat aktives Fenster höhere Rechte wie das AHK Skript?
Hallo,
vielleicht gehts damit?:
vielleicht gehts damit?:
Code: Select all
q::
WinGet, PID, PID, A
IF !IsProcessElevated(PID)
Send, Ich kann
Else MsgBox, Ich kann nicht!
Return
; 0 => Process is not elevated
; 1 => Process is elevated
; ===============================================================================================================================
; Check if a process is elevated ;
; ===============================================================================================================================
; https://github.com/jNizM/AHK_Scripts/blob/master/src/process_thread_handle_module/IsProcessElevated.ahk
IsProcessElevated(ProcessID)
{
if !(hProcess := DllCall("OpenProcess", "uint", 0x0400, "int", 0, "uint", ProcessID, "ptr"))
throw Exception("OpenProcess failed", -1)
if !(DllCall("advapi32\OpenProcessToken", "ptr", hProcess, "uint", 0x0008, "ptr*", hToken))
throw Exception("OpenProcessToken failed", -1), DllCall("CloseHandle", "ptr", hProcess)
if !(DllCall("advapi32\GetTokenInformation", "ptr", hToken, "int", 20, "uint*", IsElevated, "uint", 4, "uint*", size))
throw Exception("GetTokenInformation failed", -1), DllCall("CloseHandle", "ptr", hToken) && DllCall("CloseHandle", "ptr", hProcess)
return IsElevated, DllCall("CloseHandle", "ptr", hToken) && DllCall("CloseHandle", "ptr", hProcess)
}
; ===============================================================================================================================
Re: Hat aktives Fenster höhere Rechte wie das AHK Skript?
Danke Rohwedder,
Wegen Fehlermeldung bei Skript ohne Admin Rechte, verwende ich folgendes Skript
habe bisher keine Fehlerhaften Konstellationen gefunden.
Wegen Fehlermeldung bei Skript ohne Admin Rechte, verwende ich folgendes Skript
Code: Select all
iAS() ; ist AWin hoeher Berechtigt als Skript
{
WinGet, aktive_pid, PID, A
try
{
if(IsProcessElevated(DllCall("GetCurrentProcessId")) < IsProcessElevated(aktive_pid))
return true
else
return false
}
catch
return true
}
; ===============================================================================================================================
; Check if a process is elevated ;
; ===============================================================================================================================
; https://github.com/jNizM/AHK_Scripts/blob/master/src/process_thread_handle_module/IsProcessElevated.ahk
IsProcessElevated(ProcessID)
{
if !(hProcess := DllCall("OpenProcess", "uint", 0x0400, "int", 0, "uint", ProcessID, "ptr"))
throw Exception("OpenProcess failed", -1)
if !(DllCall("advapi32\OpenProcessToken", "ptr", hProcess, "uint", 0x0008, "ptr*", hToken))
throw Exception("OpenProcessToken failed", -1), DllCall("CloseHandle", "ptr", hProcess)
if !(DllCall("advapi32\GetTokenInformation", "ptr", hToken, "int", 20, "uint*", IsElevated, "uint", 4, "uint*", size))
throw Exception("GetTokenInformation failed", -1), DllCall("CloseHandle", "ptr", hToken) && DllCall("CloseHandle", "ptr", hProcess)
return IsElevated, DllCall("CloseHandle", "ptr", hToken) && DllCall("CloseHandle", "ptr", hProcess)
}
https://github.com/Grrdi/ZackZackOrdner/archive/master.zip --> get folders on the quick
Who is online
Users browsing this forum: No registered users and 17 guests