我正在Mac上创建软件,并且想更改IORegistryEntry的值。我可以在IORegistryExplorer上查看它,但无法对其进行编辑。因此,根据我的理解,我必须通过代码对其进行编辑。这是我的代码:

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中的值之后,它仍然没有改变。有人有什么建议吗?

谢谢

最佳答案

为了使之成为可能,通常,您要更改的特定硬件的驱动程序必须实现setProperties()(在IOKit中),以便为您进行此更改。

苹果不太可能以允许您更改制造商名称的方式在AppleUSBMultitouchDriver中实现setProperty()。他们想指定自己是哪种水果。 ;)

07-25 20:12