获取Metabase键句柄
IIS起动时会将metabase装入内存,这样metabase的数据一直产生影响,直到IIS被关闭。IIS管理基本工具以及IMSAdminBase的接口和方法都可以用来管理metabase中的数据。你可以用键的句柄( Handles to Keys)中所描述的句柄来访问metabase中的键。IIS提供的METADATA_MASTER_ROOT_HANDLE对应metabase的根目录。你可以以METADATA_MASTER_ROOT_HANDLE为参数,同时设定你需要的对这些键的读写权限,调用OpenKey方法来打开特定的键。你也可以利用一个已经用OpenKey打开的现存句柄来打开其它的键。
一旦获得一个键的句柄,你就可以用IIS Admin Base Object的方法操纵键入口。你还可以通过指定路径信息来访问当前打开键的子键。
对于一个有效的句柄,你可以用GetData方法来获得一个metabase数据,或者通过SetData方法来改变一个数据。GetAllData方法使你的程序能够通过一次方法调用获取所有与一个键相连的数据或该键的数据子集。当一个数据条目不再需要,你可以通过调用DeleteData方法将其删除。
此外,对于操作数据条目,你可以添加、删除,或将一个键从一条路径移到另一条路径。用AddKey方法加入键,用DeleteKey方法删除键。用CopyKey方法来复制或移动一个键和它的所有子键及数据项。
译注:本文译自在线MSDN的
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iisref/html/psdk/asp/abgu1w0x.asp
以上链接不直接通向该文,但是通过该链接你能很快地找到该文。之所以翻译这篇文章,是一个偶然的“机会”要用程序改变IIS的设置。不过我最后没有完成这个需求,因为我用微软提供的示例脚本访问metabase结果导致IIS崩溃(或称“下课”),最后不得不重装总个操作系统,证明直接访问metabase是相当危险的。但是如果老板坚持,在做好充分准备的情况下,还是可以一试的。metabase是一个在%windows%\system32\inetsrv\目录下的metabase.bin文件,该文件夹下还有一个MetaBack目录,操作前可以为这个metabase.bin备份。