Page 1 sur 1

[R] recuperer identité user apres le #RequireAdmin  

Posté : ven. 15 sept. 2023 10:01
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

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

Posté : ven. 15 sept. 2023 16:34
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

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

Posté : lun. 18 sept. 2023 09:34
par ludoo
Bonjour,
la box me retourne le compte admin du #RequireAdmin

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

Posté : lun. 18 sept. 2023 16:44
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 )

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

Posté : mar. 19 sept. 2023 09:28
par ludoo
Bonjour,
merci pour l'astuce , fonctionne nickel .