Username <> Session Je comprend plus rien.....

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Username <> Session Je comprend plus rien.....

Message par Kwai chang caine »

Bonjour à tous.

Je viens de m'appercevoir encore d'un truc ou je tombe par terre. :roll:

J'ai fait un programme qui verifie le nom de l'utilisateur, avec l'API qui va bien GetUserName.
Tout content, mon programme vérifie bien que je suis le bon USER.

Je me suis dit, tiens, je vais changer de USER, donc j'ai été dans gestion des comptes et j'ai changé de nom.
Nickel, le nouveau nom est bien apparu dans le menu démarrer "fermer la session" etc ....

Et quand je redémarre le prg, il me reconnais, malgres que j'ai mis un nez rouge et une perruque : 8O :lol:
Alors je fait un point d'arret, et qu'est ce que je m'appercois-je (coluche).
Ce malin a gardé l'ancien nom dans sa petite mémoire. :?

Je vais donc vérifier illico dans document & setting et effectivement le dossier a bien gardé le premier nom. 8O

Donc mes questions sont les suivantes:

1 / Peut on changer réellement ce nom que l'on a mis a l'installe de XP PRO.
J'ai fouiné sur "terre nette" et y'en a qui disent que non, et certains disent que oui mais leur methode ne marche pas.

2 / Comment fait on en PURE pour connaitre le nom de la session en cours, puisque ce n'est pas USERNAME ??

Je vous remercie de votre attention
Bonne soirée
Dernière modification par Kwai chang caine le dim. 17/déc./2006 19:44, modifié 4 fois.
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Bonjour Kwai chang caine

J'ai pas mal de visite, mais pas beaucoup d'idée, ni d'avis 8O
Meme pas un coucou !!! :cry:

Bon en fouinant sur le forum USA, je suis tombé sur un code de BINGO.
J'ai modifié le VBS d'apres un code VB6.
Et j'ai obtenu ça.

Comme dab, j'y comprend pas grand chose, mais ça marche. :lol:
Ya vraiment pas plus simple, pour obtenir juste un nom de session ?????? 8O

Code : Tout sélectionner

;           ATTENTION !!!!!
;  Creer un fichier "tmp.vbs" sous la racine du c:\ et inclure ce texte pour obtenir les infos sessions windows

;Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2") 
;Set lstuser = objWMIService.ExecQuery("Select * from Win32_useraccount Where Name <> 'Invité'")

;For Each objuser In lstuser
; soft = soft + objuser.Name & Chr(10) & Chr(13) 
;Next


Structure Variant 
    Type.w 
    Reserved1.w 
    Reserved2.w    
    Reserved3.w 
    String.l 
EndStructure 

#VT_BSTR = 8 
x.Variant\Type = #VT_BSTR 

DataSection 
meine_vbs: 
  IncludeBinary "c:\tmp.vbs" 
  Data.b 0 
EndDataSection 

Procedure.l Ansi2Uni(ansi.s) 
  size.l=MultiByteToWideChar_(#CP_ACP,0,ansi,-1,0,0) 
  Dim unicode.w(size) 
  MultiByteToWideChar_(#CP_ACP, 0, ansi, Len(ansi), unicode(), size) 
  ProcedureReturn @unicode()  
EndProcedure 

Procedure.s Uni2Ansi(*Unicode.l) 
  size.l = WideCharToMultiByte_(#CP_ACP, 0, *Unicode, -1, #Null, #Null, #Null, #Null) 
  ansi.s=Space(size) 
  WideCharToMultiByte_(#CP_ACP, 0, *Unicode, -1, @ansi, size, #Null, #Null) 
  ProcedureReturn ansi  
EndProcedure 

Enumeration ; ScriptControlStates 
  #Initialized = 0 
  #Connected = 1 
EndEnumeration 

; DispInterfaces 

Interface IScriptProcedure Extends IDispatch 
  get_Name(a) 
  get_NumArgs(a) 
  get_HasReturnValue(a) 
EndInterface 

Interface IScriptProcedureCollection Extends IDispatch 
  get__NewEnum(a) 
  get_Item(a,b,c,d,e) 
  get_Count(a) 
EndInterface 

Interface IScriptModule Extends IDispatch 
  get_Name(a) 
  get_CodeObject(a) 
  get_Procedures(a) 
  AddCode(a) 
  Eval(a,b) 
  ExecuteStatement(a) 
  Run(a,b,c) 
EndInterface 

Interface IScriptModuleCollection Extends IDispatch 
  get__NewEnum(a) 
  get_Item(a,b,c,d,e) 
  get_Count(a) 
  Add(a,b,c) 
EndInterface 

Interface IScriptError Extends IDispatch 
  get_Number(a) 
  get_Source(a) 
  get_Description(a) 
  get_HelpFile(a) 
  get_HelpContext(a) 
  get_Text(a) 
  get_Line(a) 
  get_Column(a) 
  Clear() 
EndInterface 

Interface IScriptControl Extends IDispatch 
  get_Language(a) 
  put_Language(a) 
  get_State(a) 
  put_State(a) 
  put_SitehWnd(a) 
  get_SitehWnd(a) 
  get_Timeout(a) 
  put_Timeout(a) 
  get_AllowUI(a) 
  put_AllowUI(a) 
  get_UseSafeSubset(a) 
  put_UseSafeSubset(a) 
  get_Modules(a) 
  get_Error(a) 
  get_CodeObject(a) 
  get_Procedures(a) 
  _AboutBox() 
  AddObject(a,b,c) 
  Reset() 
  AddCode(a) 
  Eval(a,b) 
  ExecuteStatement(a) 
  Run(a,b,c) 
EndInterface 

CoInitialize_(0) 
If CoCreateInstance_(?CLSID_ScriptControl,0,1,?IID_IScriptControl,@Object.IScriptControl) = 0 

object\reset() 
object\put_Language(Ansi2Uni("vbscript")) 
object\AddCode(Ansi2Uni(PeekS(?meine_vbs))) 
; 
object\Eval(Ansi2Uni("soft"),@x) 
meine_variX.s = UCase(uni2ansi(x\String)) 
; 
object\reset() 
; 
object\release() 

EndIf 
CoUninitialize_() 

MessageRequester("vbs variable",meine_variX,#PB_MessageRequester_Ok) 

DataSection 
  CLSID_ScriptControl: 
  Data.l $0e59f1d5 
  Data.w $1fbe,$11d0 
  Data.b $8f,$f2,$00,$a0,$d1,$00,$38,$bc 
    
  IID_IScriptControl: 
  Data.l $0e59f1d3 
  Data.w $1fbe,$11d0 
  Data.b $8f,$f2,$00,$a0,$d1,$00,$38,$bc 
EndDataSection
Merci et bonne journée à toi Kwai chang caine :lol:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

et comme ça c'est pas suffisant ?

Code : Tout sélectionner

HomeDir$ = GetHomeDirectory()
    MessageRequester("Ordinateur", "L'utilisateur actuel est : "+Chr(13)+HomeDir$, #MB_ICONINFORMATION)
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Bonjour Jacobus

Et surtout merci de me répondre, j'ai vraiment cru un instant etre seul au monde :cry:
Tu te rend compte 67 visite et pas une réponse ou un "Je ne sais pas"
et comme ça c'est pas suffisant ?
Ben non, car comme je l'ai expliqué, c'est le nom des sessions windows que je cherchais.
Si bien sur ta session a le meme nom que celle que tu as créé à l'installe de XP, ça marche.
Mais moi par exemple, j'ai appellé ma session administrateur "Toto" à l'install et aujourd'hui j'ai décidé de l'appeler "tata".

Eh bien, je viens de m'appercevoir que c'est pas si simple que ça.
J'ai bien tata dans le menu demarrer "Fermer session tata", j'ai bien "tata" quand je vais dans la gestion des comptes pour cliquer dessus.
Mais la ou ya l'os, c'est que dans document and setting :
Le repertoire tata n'existe pas 8O
Le repertoire toto existe toujours, alors que je l'ai remplacé par tata 8O

C'est un peu normal je pense, car il faudrait changer tous les chemins de la BDR de toto en tata.

Et ton petit code me donne bien toto, donc l'ancien nom.
Moi c'est le nouveau que je veux :cry:

Tu peux essayer de changer ton nom de compte principal, et lancer ta ligne de code, pour illustrer ce que je viens de dire, je l'ai fais plusieure fois, et chez moi ça n'a eu aucune consequence, a part fermer toutes les applis en cours.

Donc apparement le nom de SESSION est une autre variable que l'USERNAME ou HOSTNAME.
Avec mon code, je trouve bien la liste de toutes les sessions de la machine et il ne me donne pas celui de l'username ou hostname.

Quoi qu'il en soit, merci beaucoup de ton aide et n'hésite pas si tu as une autre idée :wink:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

testé sous windows 98 :

Code : Tout sélectionner

Procedure.s GetUserName()
  Protected Length.l = $FF
  Protected Name.s = Space(Length)
  
  GetUserName_(Name, @Length)
  
  ProcedureReturn Name
EndProcedure

Debug GetUserName()
Dri
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Bonjour Docteur

Alors la j'y comprend rien 8O 8O 8O

ça me donne le meme résultat que le code de jacobus, c'est à dire "Toto" et pas "Tata".
Donc cela me donne bien le nom du repertoire dans document and setting et non pas celui de la session actuellement ouverte XP PRO.

J'en ai marre oooouuuuiiinnn!!! :cry:

Merci de ton aide
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre