Serial number et OSX.8

HerveHerve Membre
juillet 2012 modifié dans API AppKit #1
Bonjour,



Pour créer une clef d'utilisateur, j'utilise la fonction suivante :
<br />
- (NSString *)serialNumber<br />
{<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 />
	//NSLog(@&quot;%@&quot;,serialNumberAsCFString);<br />
  <br />
	NSString *serialNumberAsNSString = nil;<br />
	if (serialNumberAsCFString) {<br />
		serialNumberAsNSString = [NSString stringWithString:(NSString *)serialNumberAsCFString];<br />
		CFRelease(serialNumberAsCFString);<br />
	}<br />
<br />
  <br />
	return serialNumberAsNSString;<br />
}<br />




Apparemment, cette fonction ne marche pas sous Mac OSX.8 que je n'ai pas encore installé.



Etes-vous au courant??

Réponses

  • La doc Apple ne parle pas de modification dans IOKit, je ne vois pas.



    Y a t-il sinon des modifications dans l'accès à  "Application Support" (l'individuel, le caché aux utilisateurs)?
  • Aucune idée, mais ça serait dans la logique des choses d'empêcher l'accès aux informations d'identifications uniques.
  • Oui, c'est bien ce que je crains.



    Je travaille dessus avec un copain au Japon avec qui nous nous entraidons depuis un an et qui rencontre le problème. Je lui ai envoyé une appli test.



    Je vous tiens au courant, mais si vous avez des infos...
  • Le copain japonais m'a répondu. Apparemment, le problème ne vient pas des méthodes pour récupérer le numéro de série, mais de la méthode pour créer le dossier dans ApplicationSupport.



    Sous MacOSX.7, j'utilisais :
    <br />
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);<br />
    	    NSString* supportPath= [paths objectAtIndex:0];<br />
    	    NSString* appFolderPath=[supportPath stringByAppendingPathComponent:AppName];<br />
    	    NSString* filePath=[appFolderPath stringByAppendingPathComponent:FileName];<br />
    	   <br />
    	   <br />
    	    NSData* data=[NSData dataWithBytes:autoPlug length:sizeof(CharS)];<br />
    	    [data writeToFile:filePath atomically:YES];<br />
    




    ou bien :
    <br />
    NSFileManager *fileCree;<br />
    	    NSString *cheminFichierA = [NSHomeDirectory() stringByAppendingPathComponent:@&quot;Library/Audio/Plug-Ins/Components/DazibaoAU.component&quot;];<br />
    fileCree = [[NSFileManager alloc]init];<br />
    [fileCree  copyItemAtPath:plugWay toPath:cheminFichierA error:nil];<br />
    




    Cela ne semble plus suffire pour créer le "directory", le dossier. Je vais essayer de le créer d'abord (il me semble pourtant que sous X.6 et X.7, ces méthodes étaient suffisantes, à  moins que, n'ayant jamais pensé à  détruire ce dossier lors de mes tests, je ne me suis pas rendu compte du bugg...)
  • AliGatorAliGator Membre, Modérateur
    juillet 2012 modifié #6
  • Merci AliGator,



    ya plu qa!
  • C'était bien ça... Ah là  là !! image/baby.gif' class='bbc_emoticon' alt=' :o ' />
Connectez-vous ou Inscrivez-vous pour répondre.