AutoIt-script
Hej. Nogen der ved, hvordan jeg får denne kode til at sammenligne værdierne med hinanden i stedet for at resultaterne bliver vist i to dialogbokse? Jeg har forsøgt at sætte dem op mod hinanden, hvor resultatet ender med at blive et nej (dvs. de er ikke identiske).Koden skal bruges i en sammenhæng, hvor en brugerkonto skal være en ægte konto med administratorrettigheder for at køre programmet og ikke en gæstekonto f.eks. der bliver tildelt administratorrettigheder midlertidigt. Ved "Kør som administrator..." på en almindelig brugerkonto forsvinder oplysningerne om standardkontoen man er logget på som, og jeg kan derfor ikke blokere for kørslen, hvilket er nødvendigt, da der opstår fejl.
Ved at sammenligne det reelle kontonavn med kontonavnet for de tildelte administratorrettigheder sikrer jeg, at det er en reel administratorkonto programmet kører fra.
Det er værdierne fra @UserName og _GetUsername() der skal sammenlignes. Men en typisk == og et efterfølgende IF og ELSE medfører altid, at resultatet bliver negativt - selv på en administratorkonto, hvor begge værdier bliver det samme i begge dialogbokse.
Koden er fejlfri i sin nuværende form og fundet på internettet, men er ikke anvendelig for mig. :-)
#RequireAdmin
MsgBox(0, 0, @UserName)
MsgBox(0, 0, _GetUsername())
Func _GetUsername()
Local $aResult = DllCall("Wtsapi32.dll", "int", "WTSQuerySessionInformationW", "int", 0, "dword", -1, "int", 5, "dword*", 0, "dword*", 0)
If @error Or $aResult[0] = 0 Then Return SetError(1, 0, 0)
Local $sUsername = BinaryToString(DllStructGetData(DllStructCreate("byte[" & $aResult[5] & "]", $aResult[4]), 1), 2)
DllCall("Wtsapi32.dll", "int", "WTSFreeMemory", "ptr", $aResult[4])
Return $sUsername
EndFunc ;==>_GetUsername