[c++] obtenir le nom d utilisateur du pc [RESOLU]

obtenir le nom d utilisateur du pc [RESOLU] [c++] - C++ - Programmation

Marsh Posté le 27-02-2003 à 18:35:56    

je voudrais obtenir le nom du pc, mais faudrait ke ca marche sur toutes les plates formes :/


Message édité par Gandalf_Le_Gris le 27-02-2003 à 20:36:14
Reply

Marsh Posté le 27-02-2003 à 18:35:56   

Reply

Marsh Posté le 27-02-2003 à 18:56:22    

Gandalf_Le_Gris a écrit :

je voudrais obtenir le nom du pc, mais faudrait ke ca marche sur toutes les plates formes :/


Re de re
 
Si tu veux le nom reseau, ya gethostname qui est une primitive socket d'unix, et qui est cense marche sous windows...

Reply

Marsh Posté le 27-02-2003 à 19:04:53    

ui, c aussi cke j avais trouvé sur google, merci v approfondir le sujet :D
 
merchii

Reply

Marsh Posté le 27-02-2003 à 19:37:35    

Je t'ai donner le nom de la machine...
 
Pour le nom de l'utilsateur, il y a GetUserName sous windows...

Reply

Marsh Posté le 27-02-2003 à 19:41:13    

je trouve pas beaucoup d exemple sur le net pour voir comment ca marche, le seul truc ke j ai trouvé c ca:
 
 

Code :
  1. char host[32]; //tableau pour accueillir le nom de machine sur lequel tourne ce programme
  2. struct hostent *hp; //resultat de la recherche du nom
  3. char *adrIPp;
  4. struct in_addr adrIP;
  5. gethostname(host, 32);
  6. printf("nom de la machine sur lequel tourne ce programme : %s\n", host);
  7. if((hp=gethostbyname(host))==NULL)
  8. {
  9. fprintf(stderr, "machine hebergeant le programme non identifiee par
  10. gethostbyname\n" );
  11. }
  12. printf("longueur d'adresse : %d\n", hp->h_length);
  13. adrIP.s_addr=*(int *)hp->h_addr;
  14. adrIPp =(char *)inet_ntoa(adrIP);
  15. printf("adresse IP de cette machine : %x, soit %s\n", ntohl(adrIP.s_addr), adrIPp);


 
tu en penses koi ?

Reply

Marsh Posté le 27-02-2003 à 19:45:00    

donc moi g juste mis ca:
 

Code :
  1. char host[32]; //tableau pour accueillir le nom de machine sur lequel tourne ce programme
  2. gethostname(host, 32);
  3. printf("nom de la machine sur lequel tourne ce programme : %s\n", host);


 
aucune erreur pdt la compile mais impossible de build le .exe
-> error LNK2001: unresolved external symbol _gethostname@8
 
au fait, fo mettre kel fichier en include ? parcke j ai pas trouvé grd chose :/

Reply

Marsh Posté le 27-02-2003 à 19:48:36    

sous unix c'est dans unistd.h
et sous windows WinSock.h
si t'es sous windows, faut linker avec winsock

Reply

Marsh Posté le 27-02-2003 à 19:53:24    

Gandalf_Le_Gris a écrit :

je trouve pas beaucoup d exemple sur le net pour voir comment ca marche, le seul truc ke j ai trouvé c ca:
 
 

Code :
  1. char host[32]; //tableau pour accueillir le nom de machine sur lequel tourne ce programme
  2. struct hostent *hp; //resultat de la recherche du nom
  3. char *adrIPp;
  4. struct in_addr adrIP;
  5. gethostname(host, 32);
  6. printf("nom de la machine sur lequel tourne ce programme : %s\n", host);
  7. if((hp=gethostbyname(host))==NULL)
  8. {
  9. fprintf(stderr, "machine hebergeant le programme non identifiee par
  10. gethostbyname\n" );
  11. }
  12. printf("longueur d'adresse : %d\n", hp->h_length);
  13. adrIP.s_addr=*(int *)hp->h_addr;
  14. adrIPp =(char *)inet_ntoa(adrIP);
  15. printf("adresse IP de cette machine : %x, soit %s\n", ntohl(adrIP.s_addr), adrIPp);


 
tu en penses koi ?


Hum, tu peux te tenter ça mais moi j'ai jamais reussi a utiliser gethostname sous windows et sous unix, je sais pas pourquoi. De plus, recuperer l'adresse ip d'une machine sous la forme d'une chaine c'est toujours assez chiant. Mais bon je vois pas d'autres moyens pour que ca marche sous *nix et sous windows.
 
Tu veux le nom de la machine ou bien le nom de l'utilisateur ?

Reply

Marsh Posté le 27-02-2003 à 20:02:06    

Pour ton problème de compilation si tu est sous gcc (DevCpp), la lib c'est :
libws2_32.a
 
Et sous visual c'est :
WS2_32.Lib
 
Et pour le .h c'est Winsock2.h
 
Enfin, pour mon problème qui est aussi le tien je viens de trouver ca : http://forum.hardware.fr/forum2.ph [...] subcat=386


Message édité par Poireau le 27-02-2003 à 20:05:11
Reply

Marsh Posté le 27-02-2003 à 20:11:32    

pour le nom je m en fous, c juste pour avoir un repere, nom d utilisateur c bien, masi si c trop compliké :/

Reply

Marsh Posté le 27-02-2003 à 20:11:32   

Reply

Marsh Posté le 27-02-2003 à 20:23:00    

je sais pas si j ai bien linké, mais kan je mets include Winsock2.h i me fait 58errors  :fou:


Message édité par Gandalf_Le_Gris le 27-02-2003 à 20:23:28
Reply

Marsh Posté le 27-02-2003 à 20:35:49    

voila, enfin trouvé, et c sans inclure winsock2.h:
 

Code :
  1. DWORD StrLen = 256;
  2. TCHAR SysInfoStr[256];
  3. GetComputerName(SysInfoStr, &StrLen);
  4. printf("nom de la machine : %s\n", SysInfoStr);
  5. GetUserName(SysInfoStr, &StrLen);
  6. printf("nom utilisateur : %s\n", SysInfoStr);


 
ca marche nickel

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed