關於如何讀取/寫入窗口以及它們是可用的良好jni/non-jni解決方案的數量,已經有很多問題。我已經經歷了一些,但他們都沒有提供遍歷註冊表的方法。如何在Windows註冊表中查找文件夾中的所有文件夾
通過遍歷,我的意思是說我想知道Windows註冊表中特定文件夾的所有子文件夾,然後是該文件夾中的所有鍵。
可用的解決方案,讓我們一個讀取註冊表項,而不是註冊表文件夾來查找其中的子文件夾。
關於如何讀取/寫入窗口以及它們是可用的良好jni/non-jni解決方案的數量,已經有很多問題。我已經經歷了一些,但他們都沒有提供遍歷註冊表的方法。如何在Windows註冊表中查找文件夾中的所有文件夾
通過遍歷,我的意思是說我想知道Windows註冊表中特定文件夾的所有子文件夾,然後是該文件夾中的所有鍵。
可用的解決方案,讓我們一個讀取註冊表項,而不是註冊表文件夾來查找其中的子文件夾。
我需要一些Java的解決方案,但後來發現了一些VBScrip說可以很容易地做到這一點
Const HKEY_LOCAL_MACHINE = &H80000002
strKeyPath = "SOFTWARE\MICROSOFT\Windows\CurrentVersion\MMDevices\Audio\Capture"
Sub EnumerateKeys(hive, key)
'WScript.Echo key
reg.EnumKey hive, key, arrSubKeys
If Not IsNull(arrSubKeys) Then
For Each subkey In arrSubKeys
EnumerateKeys hive, key & "\" & subkey
Next
End If
reg.GetDWORDValue hive,key,"DeviceState",nn
'WScript.Echo key & " = " & nn
If nn=268435457 Then
'WScript.Echo "Good morning!"
reg.SetDWORDValue hive,key,"DeviceState",1
ElseIf nn=1 Then
reg.SetDWORDValue hive,key,"DeviceState",268435457
Else
'WScript.Echo "Have a nice day!"
End If
End Sub
Set reg = GetObject("winmgmts://./root/default:StdRegProv")
EnumerateKeys HKEY_LOCAL_MACHINE, strKeyPath
上面的腳本不僅遍歷密鑰&子集它也讀取和比較,然後設置DWORD值。
利用Windows API進行註冊表訪問,並通過JNI公開它。
Windows註冊表API:http://msdn.microsoft.com/en-us/library/windows/desktop/ms724875(v=vs.85).aspx
主要功能是RegEnumKeyEx
這裏是走在c中的註冊表項++教程:http://www.codeguru.com/cpp/w-p/ce/registry/article.php/c8301/Walking-The-Registry-Tree.htm
感謝您的回覆。我最終最終使用了VBScript,這看起來不錯,簡單而小巧。 –
術語記:你叫什麼文件夾真的叫*鍵*。一個鍵內可以是其他鍵(子鍵),以及*值*。值有一個*名稱*和*數據*。 –