[R] recuperer identité user apres le #RequireAdmin

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
ludoo
Niveau 4
Niveau 4
Messages : 89
Enregistré le : lun. 11 août 2008 09:25
Localisation : Drôme 26
Status : Hors ligne

[R] recuperer identité user apres le #RequireAdmin  

#1

Message par ludoo »

Bonjour à tous,
Comment récupérer le compte utilisateur de la session windows après un #RequireAdmin , la variable @UserName me retourne le compte admin.
il faut que modifier un fichier txt qui contient le nom user
merci de votre aide
Modifié en dernier par ludoo le mar. 19 sept. 2023 10:58, modifié 1 fois.
Ludo
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2087
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] recuperer identité user apres le #RequireAdmin

#2

Message par TommyDDR »

Basé sur : https://www.autoitscript.com/forum/topi ... ent-409276
#RequireAdmin
Global $oMyError = ObjEvent("AutoIt.Error","MyErrFunc")

Global $owner = _ProcessListProperties(@AutoItPID)
MsgBox(0, "", $owner)

Func MyErrFunc()
   Sleep(10)
Endfunc

Func _ProcessListProperties($Process)
    Local $sUserName, $sUserDomain
    Local $ownerName

    ; Convert PID if passed as string
    If StringIsInt($Process) Then $Process = Int($Process)

    ; Connect to WMI and get process objects
    $oWMI = ObjGet("winmgmts:{impersonationLevel=impersonate,authenticationLevel=pktPrivacy, (Debug)}!\\.\root\cimv2")
    If IsObj($oWMI) Then
        If IsInt($Process) Then
            $colProcs = $oWMI.ExecQuery("select * from win32_process where ProcessId = " & $Process)
        Else
            $colProcs = $oWMI.ExecQuery("select * from win32_process where Name = '" & $Process & "'")
        EndIf

        If IsObj($colProcs) Then
            If $colProcs.count = 0 Then Return ""

            For $oProc In $colProcs
                If $oProc.GetOwner($sUserName, $sUserDomain) = 0 Then
               $ownerName = $sUserName
               ExitLoop
            EndIf
            Next
        Else
            SetError(2)
        EndIf

      $colProcs = 0
    Else
        SetError(1)
    EndIf

    Return $ownerName
EndFunc
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
ludoo
Niveau 4
Niveau 4
Messages : 89
Enregistré le : lun. 11 août 2008 09:25
Localisation : Drôme 26
Status : Hors ligne

Re: [..] recuperer identité user apres le #RequireAdmin

#3

Message par ludoo »

Bonjour,
la box me retourne le compte admin du #RequireAdmin
Ludo
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] recuperer identité user apres le #RequireAdmin

#4

Message par mikell »

Avec #RequireAdmin, @username te retourne toujours le username de l'admin :mrgreen:
Le plus simple est de passer par 2 scripts, il faut que le 2 au moins soit compilé (on lance le 1)

script 1 :
Local $username = @username
Run(@ScriptDir & '\Script 2.exe ' & $username )

script 2 :
#RequireAdmin
If $CmdLine[1] <> "" Then
    MsgBox(0, 'username', $CmdLine[1])  
Else
    MsgBox(0, 'username', 'erreur')  
EndIf

Pour lancer le 2 en .au3 (non compilé) il faut mettre dans le script 1 :
Local $username = @username
Run('AutoIt3.exe' & ' "Script 2.au3" ' & $username )
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
ludoo
Niveau 4
Niveau 4
Messages : 89
Enregistré le : lun. 11 août 2008 09:25
Localisation : Drôme 26
Status : Hors ligne

Re: [..] recuperer identité user apres le #RequireAdmin

#5

Message par ludoo »

Bonjour,
merci pour l'astuce , fonctionne nickel .
Ludo
Répondre