Je crée un logiciel sur Mac et je voudrais changer la valeur d'un IORegistryEntry. Je peux le voir sur IORegistryExplorer, mais je ne peux pas le modifier. Donc, je crois comprendre que je dois l'éditer par code. Voici mon code:Impossible d'éditer IORegistryEntry
CFMutableDictionaryRef matchingDict = IOServiceNameMatching("AppleUSBMultitouchDriver");
io_service_t service = IOServiceGetMatchingService(kIOMasterPortDefault, matchingDict);
if(service) {
CFStringRef manufacturer = IORegistryEntryCreateCFProperty(service, CFSTR("Manufacturer"), kCFAllocatorDefault,0);
NSLog(@"%@", (NSString*)manufacturer);
kern_return_t err = IORegistryEntrySetCFProperty(service, CFSTR("Manufacturer"), CFSTR("test"));
NSLog(@"error = %d", err);
}
Affichera
2010-04-10 16:09:09.015 Test[41548:a0f] Apple Inc.
2010-04-10 16:09:09.015 Test[41548:a0f] error = 0
Mais après que je vérifie la valeur du IORegistryExplorer, elle ne change toujours pas. Quelqu'un a-t'il des suggestions?
Merci
Merci beaucoup pour votre réponse. En fait, je ne veux pas changer le nom du fabricant. C'est juste pour l'exemple :-) Je veux changer la valeur de "trackpadUserPreferences". Apparemment, le volet de préférence Trackpad d'Apple peut le faire, mais je ne sais pas comment cela fonctionne. Pourriez-vous me dire comment obtenir l'objet que je peux appeler la méthode setProperty, s'il vous plaît? J'ai regardé le binaire de /System/Library/Extensions/AppleUSBMultitouch.kext/Contents/MacOS/AppleUSBMultitouch et trouvé une chaîne "AppleUSBMultitouchDriver :: setProperty" mais je ne sais pas si cela est lié à cela de quelque façon que ce soit. – yangumi
Je ne sais pas - j'exécuterais les Préférences Système dans un débogueur et je ferais en sorte qu'il casse cet appel pour voir comment il appelle les fonctions du registre. – WhirlWind