我正在Mac上创建一个软件,我想更改IORegistryEntry的值。我可以在IORegistryExplorer上查看它,但我无法编辑它。所以这是我的理解,我必须通过代码进行编辑。这里是我的代码:无法编辑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);
}
这将输出
2010-04-10 16:09:09.015 Test[41548:a0f] Apple Inc.
2010-04-10 16:09:09.015 Test[41548:a0f] error = 0
但经过我检查的IORegistryExplorer价值,但它仍然不会改变。有人有任何建议吗?
谢谢
非常感谢您的回答。其实,我不想改变制造商的名称。这仅仅是一个例子:-)我想改变“trackpadUserPreferences”的值。显然,苹果的触控板偏好设置面板可以做到这一点,但我不知道它是如何做到的。 你能告诉我如何获得可以调用setProperty方法的对象吗?我查看了/System/Library/Extensions/AppleUSBMultitouch.kext/Contents/MacOS/AppleUSBMultitouch的二进制文件,发现了一个字符串“AppleUSBMultitouchDriver :: setProperty”,但我不知道这是否与此有任何关系。 – yangumi 2010-04-10 23:27:43
我不知道 - 我会在调试器中运行系统偏好设置,让它在该调用中断,看看它是如何调用到注册表函数中的。 – WhirlWind 2010-04-10 23:36:26