Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

J'ai un souci !

28 réponses
Avatar
Jean-Luc Baptiste
Bonjour,

J'ai un programme qui fonctionne en temps que service, j'essaye de recupérer
le compte utilisateur qui à ouvert la session avec le code suivant :

lpbuffer est une chaîne ASCIIZ de 256
size est un entier=255

// on récupere le compte utilisateu
SI AppelDLL32("advapi32.dll","GetUserNameA" , &lpbuffer, &size) ALORS
leUser=lpbuffer
FIN

Ce code fonctionne parfaitement dans un applicatif mais lorsque qu'il est
inclu dans un service il renvoit System comme compte. Quelqu'un connait il
la commande qui permet de récupérer le nom du compte qui a ouvert la session
via un service ?

Bien cordialement.

Jean-Luc Baptiste

10 réponses

1 2 3
Avatar
Romain PETIT
Jean-Luc Baptiste a formulé la demande :
Non, pas si simple !

Mais je suis sur une piste, je me rends compte qui si le service lance un exe
celui-ci est joué dans l'environnement utilisateur et peut donc me renvoyer
l'username de la personne loguée.



Je suis sceptique...
L'exe lancé par le service le sera avec l'utilisateur SYSTEM si le
service est configuré par défaut, avec le nom d'un user si le service
est configuré avec ce user.
C'est normalement indépendant de la session en cours...

A+

--
Romain PETIT
contact : http://cerbermail.com/?O16kfXOFcq
+-+ posté sur Usenet avec MesNews et non depuis un forum web +-+
news:fr.comp.developpement.agl.windev
http://www.mesnews.net/
http://fr.wikipedia.org/wiki/Newsgroup
Avatar
Emmanuel Haefelé
"Romain PETIT" a écrit

Ok, donc tu veux enumérer, depuis ton programme qui tourne en tant que
service, les sessions ouvertes sur la machine.



Peut-être qu'une autre solution consisterait à lister les process qui
tournent et de récuper l'utilisateur qui exécute le processus.

Je n'ai pas de proposition quand à la méthode à appliquer mais peut-être
serait-ce plus simple que d'énumérer les sessions ouvertes.


Cordialement,

Emmanuel Haefelé.
Avatar
Jean-Luc Baptiste
C'est un piste que je vais explorer.
Sinon j'avais crée un petit batch avec set username > monfichier.txr et qui
lancé à partir du service me renvoyait bien le nom de l'utilisateur courant
adns le fichier texte mais bon pas génial comme solution.

Merci encore



"Emmanuel Haefelé" a écrit dans le message de
news:4a79ab27$0$17757$
"Romain PETIT" a écrit

Ok, donc tu veux enumérer, depuis ton programme qui tourne en tant que
service, les sessions ouvertes sur la machine.



Peut-être qu'une autre solution consisterait à lister les process qui
tournent et de récuper l'utilisateur qui exécute le processus.

Je n'ai pas de proposition quand à la méthode à appliquer mais peut-être
serait-ce plus simple que d'énumérer les sessions ouvertes.


Cordialement,

Emmanuel Haefelé.




Avatar
Jean-Luc Baptiste
Je vais me servir de l'idée d'emmanuel, je recupère la liste des processus,
je regarde qui utilise explorer.exe et c'est ok !

Merci pour tout.
Avatar
Jean-Luc Baptiste
Et boum , pas si simple encore ! j'ai toujours pas le nom d'utilisateur ....


"Jean-Luc Baptiste" a écrit dans le message de
news:4a79b844$0$12631$
Je vais me servir de l'idée d'emmanuel, je recupère la liste des
processus, je regarde qui utilise explorer.exe et c'est ok !

Merci pour tout.



Avatar
Thierry 46
Bonsoir,

En WD14

Info(RéseauUtilisateur())
me donne bien le nom du USERNAME !

Jean-Luc Baptiste a écrit :
Non, ca ne marche pas !


"Fredo G-MDI" a écrit dans le message de
news:4a799be0$0$22634$
Truc con, RéseauUtilisateur() ne va pas ?????






Avatar
Thierry 46
Bonsoir,

Je ne suis pas un spécialiste mais ce code me donne le même résultat

resultat est une chaîne ASCIIZ sur 1024
TailleMax est un entier système = 1024
TailleResultat est un entier système

TailleResultat=AppelDLL32("kernel32","GetEnvironmentVariableA","USERNAME",&resultat,TailleMax)

SI TailleResultat > 0 ALORS
Info(resultat)
SINON
//
FIN
Jean-Luc Baptiste a écrit :
Non, ca ne marche pas !


"Fredo G-MDI" a écrit dans le message de
news:4a799be0$0$22634$
Truc con, RéseauUtilisateur() ne va pas ?????






Avatar
Pascal ROY
Je dis peut-être une bêtise, mais
en regardant dans la base de registre
HKCUSoftwareMicrosoftWindowsCurrentVersionExplorer
La Clef "Logon User Name" ne contient pas la valeur que tu recherches ?


Thierry 46 a écrit :
Bonsoir,

Je ne suis pas un spécialiste mais ce code me donne le même résultat

resultat est une chaîne ASCIIZ sur 1024
TailleMax est un entier système = 1024
TailleResultat est un entier système

TailleResultat=AppelDLL32("kernel32","GetEnvironmentVariableA","USERNAME",&resultat,TailleMax)


SI TailleResultat > 0 ALORS
Info(resultat)
SINON
//
FIN
Jean-Luc Baptiste a écrit :
Non, ca ne marche pas !


"Fredo G-MDI" a écrit dans le message de
news:4a799be0$0$22634$
Truc con, RéseauUtilisateur() ne va pas ?????










--
Pascal ROY
(Service Informatique - SODALEC)
Avatar
Jean-Luc Baptiste
Ces 2 morceaux de code fonctionne lorsque le programme qui les exécute est
lancée par l'utilisateur qui a ouvert la session mais ne fonctionne pas
lorsque il est intégré dans un service !

Merci quand même !

"Thierry 46" a écrit dans le message de
news:4a79dc6a$0$23470$
Bonsoir,

Je ne suis pas un spécialiste mais ce code me donne le même résultat

resultat est une chaîne ASCIIZ sur 1024
TailleMax est un entier système = 1024
TailleResultat est un entier système

TailleResultat=AppelDLL32("kernel32","GetEnvironmentVariableA","USERNAME",&resultat,TailleMax)

SI TailleResultat > 0 ALORS Info(resultat)
SINON //
FIN
Jean-Luc Baptiste a écrit :
Non, ca ne marche pas !


"Fredo G-MDI" a écrit dans le message de
news:4a799be0$0$22634$
Truc con, RéseauUtilisateur() ne va pas ?????









Avatar
Jean-Luc Baptiste
Bonjour j'ai exploré aussi cette solution mais elle ne fonctionne pas sous
vista... Je ne trouve pas dans la base de registre vista la clé citée ni une
clé correspondante


"Pascal ROY" a écrit dans le message de
news:h5djsn$58b$
Je dis peut-être une bêtise, mais
en regardant dans la base de registre
HKCUSoftwareMicrosoftWindowsCurrentVersionExplorer
La Clef "Logon User Name" ne contient pas la valeur que tu recherches ?


Thierry 46 a écrit :
Bonsoir,

Je ne suis pas un spécialiste mais ce code me donne le même résultat

resultat est une chaîne ASCIIZ sur 1024
TailleMax est un entier système = 1024
TailleResultat est un entier système

TailleResultat=AppelDLL32("kernel32","GetEnvironmentVariableA","USERNAME",&resultat,TailleMax)
SI TailleResultat > 0 ALORS Info(resultat)
SINON //
FIN
Jean-Luc Baptiste a écrit :
Non, ca ne marche pas !


"Fredo G-MDI" a écrit dans le message de
news:4a799be0$0$22634$
Truc con, RéseauUtilisateur() ne va pas ?????










--
Pascal ROY
(Service Informatique - SODALEC)



1 2 3