IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

[C++][System][WinNT] ... Obtenir un GUID avec NT ?


Sujet :

Windows

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 183
    Points : 79
    Points
    79
    Par défaut [C++][System][WinNT] ... Obtenir un GUID avec NT ?
    Bonjour à tous, j'ai un petit chouci :

    Je souhaite obtenir un GUID, sous Windows XP, j'utilise donc
    UuidCreateSequential ( Rpcrt4.lib ) qui permet d'en obtenir un ...

    Mais voila, la fonction n'existe que sous Windows 98/Me, XP, 2000 pro, Server 2003 et Server 2000 ... pas pour NT ?!

    Je suis donc à la recherche d'un equivalent pour Windows NT ...

    Si ça vous dit qlq chose ...

    Merchi à vous !
    Seb

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    CoCreateGuid() ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 667
    Points
    10 667
    Billets dans le blog
    3
    Par défaut
    Ou simplement UuidCreate ?
    Voir :
    http://support.microsoft.com/kb/312023/en-us

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 183
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par Médinoc
    CoCreateGuid() ?
    La doc Visual :
    In Windows NT 4.0, Windows 95, DCOM release, and Windows 98, UuidCreate returns RPC_S_UUID_LOCAL_ONLY when the originating computer does not have an ethernet/token ring (IEEE 802.x) address. In this case, the generated UUID is a valid identifier, and is guaranteed to be unique among all UUIDs generated on the computer. However, the possibility exists that another computer without an ethernet/token ring address generated the identical UUID. Therefore you should never use this UUID to identify an object that is not strictly local to your computer. Computers with ethernet/token ring addresses generate UUIDs that are guaranteed to be globally unique.
    Je voudrais que la fonction me renvois toujours la même valeur, pour un PC donné ... En fait, je cherche un ID qui soit unique par PC ( genre d'après l'adresse MAC )

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Euh... UuidCreateSequential ne le fait pas non plus, tu sais...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 667
    Points
    10 667
    Billets dans le blog
    3
    Par défaut
    Le principe de l'UUID est justement d'être toujours différent, quelque soient l'heure et la machine sur laquel il est généré. Autrement dit, sur une même machine, tu n'obtiendras jamais 2 fois le même UUID.
    Bases toi plutôt sur l'adresse MAC.

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 183
    Points : 79
    Points
    79
    Par défaut
    Les octets 2 à 7 du champ Data4 de UuidCreateSequential sont obtenus d'apres l'adresse MAC ...

    Vous obtenez un identifiant unique par PC ... Ou en tout cas, les probabilités sont extremement reduites d'avoir 2 fois le même ...

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 183
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par Aurelien.Regat-Barrel
    Bases toi plutôt sur l'adresse MAC.
    Oui, mais justement, comment obtenir l'adresse MAC d'un PC ???
    ( Sous Windows XP, 2000, NT, et si possible 9x )

  9. #9
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 667
    Points
    10 667
    Billets dans le blog
    3
    Par défaut
    Avec GetAdaptersInfo par exemple.

  10. #10
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 183
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par Aurelien.Regat-Barrel
    Avec GetAdaptersInfo par exemple.
    Cool, merci !

    ... mais ...

    Requirements
    Client: Included in Windows XP, Windows 2000 Professional, Windows Me, and Windows 98.
    Server: Included in Windows Server 2003 and Windows 2000 Server.
    Header: Declared in Iptypes.h.
    Et pour NT, on peut faire comment ? : :

    [Edit] Par contre, cela ne marchera pas si un PC n'a pas de carte rezo ...
    Y'a pas moyen de recuperrer un truc que tout le monde a ?! ... Genre le numero de serie du disque dur ?!!! ... Genre avec un GetVolumeInformation() ??? ... ça pourrait marcher, non ?

  11. #11
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Tu pourrais peut-être aussi tenter de récupérer le N° unique de mouchard des pentiums, mais j'ignore comment.

    Bon, trève de plaisanterie, le n° de série du disque dur, si accessible, peut être une bonne idée. Mais je doute que tu puisse l'obtenir sans être admin, pour commencer.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  12. #12
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 667
    Points
    10 667
    Billets dans le blog
    3
    Par défaut
    Pour GetAdaptersInfo sur NT, faut tester. Vu que NT n'est plus supporté par MS, ça peut marcher même sans être dans la liste.
    Pour le DD, voir GetVolumeInformation.

  13. #13
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 183
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par Médinoc
    Tu pourrais peut-être aussi tenter de récupérer le N° unique de mouchard des pentiums, mais j'ignore comment.

    Bon, trève de plaisanterie, le n° de série du disque dur, si accessible, peut être une bonne idée. Mais je doute que tu puisse l'obtenir sans être admin, pour commencer.
    Oui, bonne idée, je vais faire ça ... ... Oups, ça marchera pas sur les AMD alors ?!

    Pour GetAdaptersInfo sur NT, faut tester. Vu que NT n'est plus supporté par MS, ça peut marcher même sans être dans la liste.
    Pour le DD, voir GetVolumeInformation.
    Zut, t'as raison : je ne sais pas si le GetVolumeInformation() marchera sous NT ... Sinon, sous XP, ça marche impec ! ... Ce n'est qu'un 32b, mais il faudrait pas avoir de bol pour trouver 2 PC avec même n° serie du disque dur ...

    En tout cas, merci @ vous ...

    Est ce qu'une bonne âme a un Windows NT dans le coin et veut bien tester ?!

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    CString GetHddSerial( )
    {
    	CString returnKey;
    	wchar_t HDD_Name[128], HDD_FileSystem[16];
    	DWORD HDD_Serial;
    	DWORD DW1;
    
    	// Get HDD serial
    	if( !GetVolumeInformation( _T("C:\\"), HDD_Name, 128, &HDD_Serial, &DW1, &DW1, HDD_FileSystem, 16 ) )
    		returnKey = _T("");
    	else
    		returnKey.format( _T("%08X"), HDD_Serial );
    
    	return( returnKey );
    }
    D'avance merci beaucoup

    Bonne soirée @ tous.
    cordialement,
    Seb

  14. #14
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 667
    Points
    10 667
    Billets dans le blog
    3
    Par défaut
    Si ça peut t'aider:
    http://msdn.microsoft.com/library/en-us/sysinfo/base/using_system_information.asp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment obtenir un .ico avec un .bmp ou .jpeg ?
    Par tarbala dans le forum Imagerie
    Réponses: 11
    Dernier message: 23/08/2006, 18h17
  2. [API][Système] Executer une commande dos avec arguments
    Par oOoOuuhmAn dans le forum Général Java
    Réponses: 4
    Dernier message: 17/03/2006, 12h37
  3. [System][EXEC] Probleme d'execution avec une commande parametrée.
    Par chicorico dans le forum Général Java
    Réponses: 15
    Dernier message: 20/05/2005, 15h07
  4. Réponses: 2
    Dernier message: 14/02/2005, 14h26
  5. Obtenir un .bin avec MASM
    Par dec0y dans le forum Assembleur
    Réponses: 3
    Dernier message: 25/10/2004, 20h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo