|
Windows 的注册表实质上是一个宠大的数据库,它存储计算机的硬件、软件及用户方面的信息。在实际的日常应用和程序写作中我们经常访问注册表,恶意软件更是会在改注册表中动手脚。为了让开发人员可以方便地访问注册表,众多的编程语言都提供了注册表操作函数。许多脚本语言也提供了一些简单的操作函数,但是可能不会很丰富。这给在编写脚本带来了不便,我也曾经遇过这样的情况。下面这个工具可以弥补一些脚本语言中的不足,该工具主要是提供了枚举注册中某个键的所有子键和枚举注册表中某个键的所有值,这个工具是一个COM服务器。其中的COM 对象也都是自动化的对象,所以可以在脚本中使用。相应的COM 对象已实现了枚举接口,故在使用时可以采用foreach 的方式。注意枚举器的Add函数并不是往注册表中写入数据。[DOWNLOAD URL] http://www.cppblog.com/Files/Robertxiao/Regtool.rar 下面我摘录其idl文件中内容
1[ 2 object, 3 uuid(FF2D77E4-6814-4BCC-B3C2-8500A300264F), 4 dual, 5 nonextensible, 6 helpstring("ITob 接口"), 7 pointer_default(unique) 8] 9interface ITob : IDispatch{ 10 [id(1), helpstring("方法RegEnum")] HRESULT RegEnum([in] BSTR bstrKeyFullPath, [out,retval] IUnknown** ppUnknown); 11 [id(2), helpstring("method ListChildNames")] HRESULT ListChildNames([in] BSTR bstrKeyFullPath, [out,retval] IUnknown** ppUnknown); 12}; 13[ 14 object, 15 uuid(E8F0A927-DC24-402D-9437-58136E61CF5F), 16 dual, 17 nonextensible, 18 helpstring("IChildKeys 接口"), 19 pointer_default(unique) 20] 21interface IChildKeys : IDispatch{ 22 [id(1), helpstring("方法Add")] HRESULT Add([in] BSTR bstrKeyName); 23 [propget, id(2), helpstring("属性 Count")] HRESULT Count([out, retval] LONG* pnCount); 24 [propget, id(DISPID_VALUE), helpstring("属性 Item")] HRESULT Item([in] LONG nIndex, [out, retval] BSTR* pbstrKeyName); 25 [propget, id(DISPID_NEWENUM), helpstring("属性 _NewEnum")] HRESULT _NewEnum([out, retval] IUnknown** ppEnum); 26}; 27[ 28 object, 29 uuid(C10ADC20-7BF3-482B-BB62-0273B5E64688), 30 dual, 31 nonextensible, 32 helpstring("IKeyValues Interface"), 33 pointer_default(unique) 34] 35interface IKeyValues : IDispatch{ 36 [id(1), helpstring("method Add")] HRESULT Add([in] BSTR bstrName); 37 [propget, id(2), helpstring("property Count")] HRESULT Count([out, retval] LONG* pVal); 38 [propget, id(DISPID_VALUE), helpstring("property Item")] HRESULT Item(LONG nIndex, [out, retval] BSTR* pVal); 39 [propget, id(DISPID_NEWENUM), helpstring("property _NewEnum")] HRESULT _NewEnum([out, retval] IUnknown** pVal); 40}; 41[ 42 uuid(2990E9A8-5AFF-474A-AD45-90A705866FAF), 43 version(1.0), 44 helpstring("RegTool 1.0 类型库") 45] 46library RegToolLib 47{ 48 importlib("stdole2.tlb"); 49 [ 50 uuid(5E2513E7-DCF9-41DC-9F2C-6D29AA079B9D), 51 helpstring("Tob Class") 52 ] 53 coclass Tob 54 { 55 [default] interface ITob; 56 }; 57 [ 58 uuid(D6A9C4D0-A356-4282-89D9-C9263104A006), 59 helpstring("ChildKeys Class") 60 ] 61 coclass ChildKeys 62 { 63 [default] interface IChildKeys; 64 }; 65 [ 66 uuid(25BB24E4-46A9-46B1-BD85-BFC7FBE7ECF2), 67 helpstring("KeyValues Class") 68 ] 69 coclass KeyValues 70 { 71 [default] interface IKeyValues; 72 }; 73}; 74
|