Je souhaite récupérer la clé du numéro de série de la machine. Est-ce que n'importe quel corps m'aide sur comment aller chercher le numéro de série de la machine?Comment obtenir le numéro de série de la machine
Répondre
Il n'y a pas d'API Cocoa pour cela. Vous devez appeler Carbon.
#import <Carbon/Carbon.h>
#import<IOKit/IOKitLib.h>
#import <mach/mach.h>
NSString* UKSystemSerialNumber()
{
mach_port_t masterPort;
kern_return_t kr = noErr;
io_registry_entry_t entry;
CFTypeRef prop;
CFTypeID propID;
NSString* str = nil;
kr = IOMasterPort(MACH_PORT_NULL, &masterPort);
if(kr != noErr)
goto cleanup;
entry = IORegistryGetRootEntry(masterPort);
if(entry == MACH_PORT_NULL)
goto cleanup;
prop = IORegistryEntrySearchCFProperty(entry, kIODeviceTreePlane, CFSTR("serial-number"), nil, kIORegistryIterateRecursively);
if(prop == nil)
goto cleanup;
propID = CFGetTypeID(prop);
if(propID != CFDataGetTypeID())
goto cleanup;
const char* buf = [(NSData*)prop bytes];
int len = [(NSData*)prop length],
x;
char secondPart[256];
char firstPart[256];
char* currStr = secondPart; // Version number starts with second part, then NULLs, then first part.
int y = 0;
for(x = 0; x < len; x++)
{
if(buf[x] > 0 && (y < 255))
currStr[y++] = buf[x];
else if(currStr == secondPart)
{
currStr[y] = 0; // Terminate string.
currStr = firstPart;
y = 0;
}
}
currStr[y] = 0; // Terminate string.
str = [NSString stringWithFormat: @"%s%s", firstPart, secondPart];
cleanup:
mach_port_deallocate(mach_task_self(), masterPort);
return str;
}
Le code ci-dessus provient de here
Ceci est de Technical Note TN1103
#include <CoreFoundation/CoreFoundation.h>
#include <IOKit/IOKitLib.h>
// Returns the serial number as a CFString.
// It is the caller's responsibility to release the returned CFString when done with it.
void CopySerialNumber(CFStringRef *serialNumber)
{
if (serialNumber != NULL) {
*serialNumber = NULL;
io_service_t platformExpert = IOServiceGetMatchingService(kIOMasterPortDefault,
IOServiceMatching("IOPlatformExpertDevice"));
if (platformExpert) {
CFTypeRef serialNumberAsCFString =
IORegistryEntryCreateCFProperty(platformExpert,
CFSTR(kIOPlatformSerialNumberKey),
kCFAllocatorDefault, 0);
if (serialNumberAsCFString) {
*serialNumber = serialNumberAsCFString;
}
IOObjectRelease(platformExpert);
}
}
}
Je serais prudent, cependant, il mentionne quelques mises en garde de ne pas faire des hypothèses sur la longueur S/N ou quoi que ce soit
Salut. Je reçois les erreurs de liaison suivantes en utilisant le code ci-dessus. 1. "_IORegistryEntrySearchCFProperty", référencé par: 2. "_IOMasterPort", référencé par: 3. "_IORegistryGetRootEntry", référencé par: 4. "_IORegistryEntrySearchCFProperty", référencé par: 5. "_IOMasterPort", référencé par: 6. "_IORegistryGetRootEntry" , référencé par: J'ai inclus les fichiers Carbon/Carbon.h, SystemConfiguration/SystemConfiguration.h. Comment résoudre ces erreurs – Shakti
- 1. Appel système pour obtenir le numéro de série de la machine sous linux (programmé en java)
- 2. Comment obtenir le numéro de série du disque dur
- 3. Comment obtenir le numéro de série des disques durs?
- 4. Hdd Numéro de série
- 5. Appel Pinvoke pour obtenir le numéro de série de Windows?
- 6. Obtenir le numéro de série USB avec VB.net?
- 7. Drupal Numéro de série
- 8. Comment obtenir le numéro de série de la clé USB en C#
- 9. Vérificateur de numéro de série
- 10. Renommer le PC au numéro de série
- 11. Comment trouver le numéro de série unique d'un périphérique flash?
- 12. Comment obtenir la série de la carte mère en Delphi?
- 13. Obtention du numéro de série du BIOS
- 14. Comment obtenir le temps de fonctionnement de la machine?
- 15. Comment utiliser C# pour obtenir le numéro de série du disque dur?
- 16. Comment pourrait obtenir le numéro de série du disque dur scsi?
- 17. Comment obtenir le numéro de série du fabricant d'un lecteur flash USB?
- 18. Génération d'un numéro de série ou d'un numéro unique
- 19. Une méthode plus rapide pour obtenir le numéro de série du volume?
- 20. comment obtenir le numéro de téléphone dans le périphérique réel
- 21. Comment obtenir le numéro de ligne?
- 22. Comment obtenir le numéro de page?
- 23. Recherche du numéro de série d'un CD
- 24. Quel serait le code pour l'authentification du numéro de série?
- 25. Comment obtenir le numéro d'instance
- 26. Numéro de série Colonne dans ListView
- 27. navigation page php par numéro de série
- 28. Comment créer un générateur de numéro de série?
- 29. Windows Mobile, comment obtenir ID et série?
- 30. Expression Studio ne demande pas de numéro de série
Hi. Je reçois les erreurs de liaison suivantes en utilisant le code ci-dessus. 1. "_IORegistryEntrySearchCFProperty", référencé à partir de: 2. "_IOMasterPort", référencé à partir de: 3. "_IORegistryGetRootEntry", référencé à partir de: 4. "_IORegistryEntrySearchCFProperty", référencé à partir de: 5. "_IOMasterPort", référencé à partir de: 6. "_IORegistryGetRootEntry", référencé par: J'ai inclus les fichiers Carbon/Carbon.h, SystemConfiguration/SystemConfiguration.h. Comment résoudre ces erreurs – Shakti
Vous devrez ajouter le framework 'IOKit' et' Carbon' dans votre projet – iamamac
Merci beaucoup lamamac.Il fonctionne parfaitement bien. – Shakti