When using the Current Host & Any User keys with CFPreferencesMBS it seems to ignore the Current Host directive and uses Any Host. Anyone else see this or have a fix?
Public Sub Open() Handles Open
Dim xPrefs As CFPreferencesMBS
xPrefs = New CFPreferencesMBS
lstAnyHost.DeleteAllRows()
Dim xDict As CFDictionaryMBS
Dim dDict As Dictionary
xDict = xPrefs.CopyDictionary("com.apple.PowerManagement",CFPreferencesMBS.kCFPreferencesAnyUser,CFPreferencesMBS.kCFPreferencesAnyHost)
If xDict <> Nil Then
dDict = xDict.Dictionary.Value("Battery Power")
For i As Integer = 0 to dDict.Count-1
lstAnyHost.AddRow dDict.Key(i).StringValue
Next
End If
lstAnyHost.SortedColumn = 0
lstAnyHost.Sort()
xDict = xPrefs.CopyDictionary("com.apple.PowerManagement",CFPreferencesMBS.kCFPreferencesAnyUser,CFPreferencesMBS.kCFPreferencesCurrentHost)
If xDict <> Nil Then
dDict = xDict.Dictionary.Value("Battery Power")
For i As Integer = 0 to dDict.Count-1
lstCurrentHost.AddRow dDict.Key(i).StringValue
Next
End If
lstCurrentHost.SortedColumn = 0
lstCurrentHost.Sort()
xDict = CFDictionaryMBS(NewCFObjectMBSFromXML(NewCFBinaryDataMBSStr(ShellExec("defaults read /Library/Preferences/com.apple.PowerManagement.plist"))))
If xDict<> Nil Then
dDict = xDict.Dictionary.Value("Battery Power")
For i As Integer = 0 to dDict.Count-1
lstAnyHostActual.AddRow dDict.Key(i).StringValue
Next
End If
lstAnyHostActual.SortedColumn = 0
lstAnyHostActual.Sort()
xDict = CFDictionaryMBS(NewCFObjectMBSFromXML(NewCFBinaryDataMBSStr(ShellExec("defaults read /Library/Preferences/com.apple.PowerManagement.*.plist"))))
If xDict <> Nil Then
dDict = xDict.Dictionary.Value("Battery Power")
For i As Integer = 0 to dDict.Count-1
lstCurrentHostActual.AddRow dDict.Key(i).StringValue
Next
End If
lstCurrentHostActual.SortedColumn = 0
lstCurrentHostActual.Sort()
MsgBox "AnyHost: " + CFPreferencesMBS.kCFPreferencesAnyHost.str + EndOfLine +_
"AnyUser: " + CFPreferencesMBS.kCFPreferencesAnyUser.str + EndOfLine +_
"CurrentHost: " + CFPreferencesMBS.kCFPreferencesCurrentHost.str + EndOfLine +_
"CurrentUser: " + CFPreferencesMBS.kCFPreferencesCurrentUser.str
End Sub
Private Function ShellExec(command As String) as String
Dim sh As New Shell
sh.Execute(command)
Return sh.Result
End Function