我正在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