Récupérer le nom de l'ordinateur

Bonjour



Comme le titre l'implique, je cherche à  récupérer le nom de l'ordinateur, mais aussi le nom de (ou des) utilisateurs.



Quelle est la démarche ?



Merci d'avance

Réponses

  • Regarde du côté de NSHost peut-être ?
  • MalaMala Membre, Modérateur
    Tu as aussi NSUserName() et CSCopyMachineName().
  • NSHost pour le nom de machine oui. Et du coté de l'API OpenDirectory pour les utilisateurs peut être.



    J'espère que ce n'est pas une application à  but malveillant qui à  besoin de ce genre de chose... Ce son des données sensibles qui sont demandé ici.
  • Pour la liste des utilisateurs,



    Tu as l'exemple identifySample dans les samples code



    voir http://developer.apple.com/library/mac/#samplecode/IdentitySample/Introduction/Intro.html#//apple_ref/doc/uid/DTS10003978
  • MalaMala Membre, Modérateur
    Je ne sais pas si c'est encore d'actualité car cela date un peu mais j'ai mémoire que l'appel de NSHost pouvait s'avérer lent selon le réseau.
  • Bonjour et merci pour toutes vos réponses



    Pour rassurer yoann, mes fins ne sont pas malveillantes, je veux créer une méthode de protection pour mon application : lorsque mon appli est ouverte pour la première fois sur un ordi, elle récupère son nom, l'enregistre en crypté ce qui empêchera l'utilisateur de la donner à  quelqu'un d'autre et de l'utiliser sur un autre ordi.



    Sinon, je suis allé voir NSHost et NSUserName mais je n'ai pas compris la façon de les utiliser.

    Quelqu'un peut il me donner un exemple, la doc ne m'est pas très claire ?



    Merci d'avance
  • jpimbertjpimbert Membre
    août 2012 modifié #8
    Le code suivant renvoie le nom du Host sous forme de NSString
    <br />
    [[NSHost currentHost] name]<br />
    




    Et NSUserName est une simple fonction qui renvoie un NSString
  • Et si l'utilisateur change de machine ou de nom de compte ?



    Rajouter des sécurité antipiratage peut être interessant, à  condition que ce ne soit pas l'acheteur qui en fasse les frais.

    Il suffit de voir le résultat avec l'industrie du jeux vidéos : il y a plus de problèmes pour les acheteurs que pour les pirates.
  • Merci jpimbert mais j'ai essayé ce code :
    <br />
      NSString *s = [[NSHost currentHost] name];<br />
      NSString *ss = NSUserName();<br />
    


    mais j'obtiens pour les 2 (s et ss) une erreur identique : "out of scope"

    QU'est ce que j'ai oublié ?



    Pour Thibaut : En effet si l'utilisateur change de machine il a un problème. Le but est de recontacter afin que je lui donne un nouvel accès. Bon il faut dire que cette appli ne vise pas le grand public...
  • 'Fred20' a écrit:


    Pour rassurer yoann, mes fins ne sont pas malveillantes, je veux créer une méthode de protection pour mon application : lorsque mon appli est ouverte pour la première fois sur un ordi, elle récupère son nom, l'enregistre en crypté ce qui empêchera l'utilisateur de la donner à  quelqu'un d'autre et de l'utiliser sur un autre ordi.




    Alors non, ne part pas comme ça, utilise le hardware serial number de la machine. De cette manière tu ne rendra pas fou le service IT de tes clients lorsqu'ils renommeront les machines ou retirerons des users.



    Ce numéro est fixe à  la machine même à  travers les réinstallations et les réparation (même en cas de remplacement de carte logique).
  • Fred20Fred20 Membre
    août 2012 modifié #12
    Mais alors, comment fais tu pour récupérer ce numéro de série par programmation ?

  • Ok merci



    J'essaye
  • Bonjour



    Pour info, les codes :
    <br />
      NSString *s = [[NSHost currentHost] name];<br />
      NSString *ss = NSUserName();<br />
    


    fonctionnent bien. Après éteinte et rallumage de l'ordinateur, maintenant ça marche. Je ne sais pas ce qui c'est passé...



    merci encore à  tous
  • 'Fred20' a écrit:


    Bonjour



    Pour info, les codes :
    <br />
      NSString *s = [[NSHost currentHost] name];<br />
      NSString *ss = NSUserName();<br />
    


    fonctionnent bien. Après éteinte et rallumage de l'ordinateur, maintenant ça marche. Je ne sais pas ce qui c'est passé...



    merci encore à  tous




    Même si ça marche ça reste la mauvaise méthode pour ce que tu cherche à  faire. J'espère pour toi ne jamais avoir à  déployer ton soft chez mes clients si tu continue à  autorisé la machine en fonction du hostname ^^
  • Ne t'inquiète pas ! tes clients ne risquent rien.

    Et c'est surtout pour essayer dans un premier temps de d'apprendre cocoa image/biggrin.png' class='bbc_emoticon' alt=':D' />

    Avant d'avoir des clients, la marche est longue ... en tout cas à  mon niveau...
  • Autrement, cette discussion dans un autre forum te donnera des pistes pour travailler avec le numéro de série ou l'ID du Mac :

    http://stackoverflow.com/questions/7066616/udid-equivalent-on-the-mac
  • Merci Hervé

    Mais ce lien n'est utilise que pour iOS et non mac OS, si je ne m'abuse ??
  • Non, ce lien est pour Mac OS. je me suis fait une protection avec ces méthodes pour le synthé que je vends depuis mon site. Je peux te dire que cela fonctionne!!
  • <p>Je ne comprends pas. J&#39;ai testé les exemples mais la compli me confirme bien que je ne suis pas sous iOS</p>

    <p> </p>

    <p>As tu quelques lignes d&#39;exemples ?</p>

    <p> </p>

    <p>merci d&#39;avance</p>

    <div id="myEventWatcherDiv" style="display:none;"> </div>

  • CéroceCéroce Membre, Modérateur
    septembre 2012 modifié #22
    Le lien donné par Hervé est bon, ce n'est pas la question qu'il faut regarder, mais les réponses.

    En particulier, l'une d'elle donne le code qui renvoie l'adresse MAC.
  • Allez, un peu de code source :



    [/size][/font]<br />
    NSString numeroDeSerie{<br />
    io_service_t    platformExpert = IOServiceGetMatchingService(kIOMasterPortDefault,<br />
    																	<br />
    																	 IOServiceMatching(&quot;IOPlatformExpertDevice&quot;));<br />
    	    CFStringRef serialNumberAsCFString = NULL;<br />
    	   <br />
    	    if (platformExpert) {<br />
    		    serialNumberAsCFString = IORegistryEntryCreateCFProperty(platformExpert,<br />
    																	 CFSTR(kIOPlatformSerialNumberKey),<br />
    																	 kCFAllocatorDefault, 0);<br />
    		    IOObjectRelease(platformExpert);<br />
    	    }<br />
    	   <br />
    	    NSString *serialNumberAsNSString = nil;<br />
    	    if (serialNumberAsCFString) {<br />
    		    serialNumberAsNSString = [NSString stringWithString:(NSString *)serialNumberAsCFString];<br />
    		    CFRelease(serialNumberAsCFString);<br />
    	    }<br />
    <br />
    return serialNumberAsNSString;<br />
    }<br />
    




    Après tu fais des comparaisons à  l'aide des méthodes de NSString.
  • Gardez en tête que l'adresse Mac de la machine, c'est pas une bonne idée, surtout si une carte grille... Le numéro de série de la carte mère c'est la seule et unique bonne solution...



    En cas de remplacement de carte mère, l'adresse Mac va changer, alors que le numéro de série sera remis par le SAV.
  • CéroceCéroce Membre, Modérateur
    Je n'en suis pas totalement convaincu. Apple utilise bien l'adresse MAC pour les autorisations sur le Mac App Store, par exemple.

    Au bas du lien donné par hervé, quelqu'un dit justement qu'ils ont eu moins de problèmes avec les adresses MAC qu'avec les n° de séries.



    Qu'est-ce qu'on récupère en fait? Le n° de série de la carte mère ou celle du Mac ?
  • 'Céroce' a écrit:


    Je n'en suis pas totalement convaincu. Apple utilise bien l'adresse MAC pour les autorisations sur le Mac App Store, par exemple.

    Au bas du lien donné par hervé, quelqu'un dit justement qu'ils ont eu moins de problèmes avec les adresses MAC qu'avec les n° de séries.



    Qu'est-ce qu'on récupère en fait? Le n° de série de la carte mère ou celle du Mac ?




    De la carte mère ou du Mac, c'est la même chose. C'est localisé sur la carte mère mais c'est le numéro de série associé à  ta machine.



    Le problème de l'adresse MAC, c'est que tu t'expose à  des problèmes de config selon l'administrateur que tu as en face. Il faut se rappeler qu'une adresse MAC peut être changé à  la main. Tout un range d'adresse est réservé pour assignation manuel...



    Pour moi, choisir l'adresse MAC comme identifiant unique c'est presque aussi insensé que prendre l'IP de la machine. Même si effectivement des méthodes sont données pour s'en servir.
Connectez-vous ou Inscrivez-vous pour répondre.