定制自己的exchange及ocs管理工具

[EXCHANGE]自己打造定制的管理工具 (转贴)
谈起Exchange的管理,一般的人一定会想到使用系统自带的管理工具,然而由于Exchange的管理需要使用多个不同的管理界面才能完成,一般来说,我们要用到ADUC(就是活动目录用户和计算机)来管理用户信息。
在日常的管理中,我们在建立用户的时候,总是要同时建立邮箱。但如果没有在客户端安装Exchange的管理工具(简称ESM),那么在ADUC(活动目录用户和计算机)里是看不到这个建立邮箱的任务扩展的,这个问题以前我们多次讨论过,最典型的是当EX和DC不安装在一起的时候,在DC上建立用户将无法同时建立邮箱,我们以往的解决方法一般是在DC或管理客户端安装ESM来扩展ADUC,但这样做有个缺点,安装了ESM后,虽然一般用户并无权限对ESM里的东西进行操作,但由于ESM可以在客户端启动,并可以查看一些简单的信息,这会给客户带来一定的安全隐患,如果遇到精通电脑的高手,还可能通过此分析EX组织的信息等。而且ESM不能单独安装,安装后会同时安装迁移向导等几个工具和文挡,这样也给用户以可乘之机。那么如何解决既要让用户能建立邮箱,又不能改变或查看EX配置和信息呢?
通过几个星期对管理工具的安装分析,我终于找到了不用安装ESM就可以进行必要管理的方法,下面来介绍一下它。为了方便起见,我还将LCS的部分功能也融合进去了,成为了一个自定义的管理工具,效果相当的好。
我们将分3个方面来介绍这个工具的制作:
1、ADUC部分
这部分比较简单,我们知道ADUC实际上就是一个MMC的管理单元,我们找到计算机上的dsa.msc,这就是ADUC的启动程序,使用记事本打开它,我们可以看到其中有很多的CLSID,通过在注册表中查找这些CLSID号,我们可以找到很多的相关的DLL文件。经过分析,我们看到有些DLL是控制用户属性中的终端服务和拨入页的,这些我们不需要,因此将其删除,最后我们得到了几个主要的DLL文件,一个是dsadmin.dll,另一个是adprop.dll,还有一个是dsprop.dll,这三个文件分别控制着用户属性的基本页面和管理扩展。在一个干净的加入域的XP系统上依次注册这三个DLL文件,再打开主程序,我们可以管理用户基本属性了。
2、Exchange Task
第一步相对比较简单,但我们知道,如果不在计算机上安装Exchange管理工具,是看不到Exchange Task的扩展的,那这个该如何处理呢?既然这个扩展是管理工具安装时建立的,那就分析一下安装过程吧。于是我分析了管理工具安装时留下的日志文件,发现它注册了一个叫maildsmx.dll的文件,检查这个文件的属性,确实是一个扩展管理单元,由此我确认该程序是主要的,但该程序并不能手工注册成功,于是我想到了DLL之间的依存关系。打开存在于2003 Support Tools里的检查依存关系的工具Dependency Walker ,读入该文件,检查,果然发现了另外几个文件。分别是:
c:\program files\exchsrvr\bin\ADDRESS.DLL
c:\program files\exchsrvr\bin\ESCPRINT.DLL
c:\program files\exchsrvr\bin\EXCHMEM.DLL
c:\program files\exchsrvr\bin\PTTRACE.DLL
c:\program files\exchsrvr\bin\ESE.DLL
c:\program files\exchsrvr\bin\GLBLNAME.DLL
c:\program files\exchsrvr\bin\CDOEXM.DLL
c:\program files\exchsrvr\bin\MAILDSMX.HLP
我把这几个文件COPY过来,再注册第一个DLL文件,成功了。打开ADUC,看到了Exchange Task了,看起来好象结束了,但在测试过程中却发现在任务里没有移动邮箱。虽然移动邮箱不是一个经常要做的操作,但这样显然是有问题的。于是继续查找,由于不知道具体的原因,因此只能继续分析安装过程,又看到了几个DLL,但依次注册后仍没有效果,分析陷入了困境。
继续分析,发现系统好象修改了注册表,想到在文件上没有问题了那会不是注册表的问题呢,于是查看了注册表,发现安装了管理工具的注册表多了很多,如何判断是不是问题的关键呢?我于是将注册表改名,发现移动邮箱消失了,这证明了确实是这些注册表在起作用,但那么多的键,是哪个呢?又要开始分析了。。依次修改每个子键的名字,最后发现是SETUP这个子键在起作用,查看我的客户端的该注册表位置,发现SETUP下是空的,可以确定问题在这里了。
但SETUP下的键特别的多,总不能全写进去吧,还要分析,经过复杂的分析,终于找到了是ExchangeServerAdmin这个值在起作用。在客户端加上这个注册表,移动邮箱终于出现了,呼。。
测试移动邮箱,连接源服务器……,失败!打开错误日志,MAPI错误,晕。。这是怎么回事呢?经过分析,我想到移动邮箱需要打开邮箱,而打开邮箱是借助MAPI完成的,于是查询与此相关的信息,看到了有个名为MAPI32.DLL的文件,查看其版本为1.0,而服务器上的则为6.5,大小也不一样,看来和这个有关。于是替换了该文件,重新测试,连接源服务器……,打开源邮箱……失败!晕。还是失败,再看日志,这次和上次不一样了,提示无法加载emsmdb.dll 。这个错误好象比较明确了,于是去找这个文件,而是找遍了也找不到,于是搜索,发现了一个叫emsmdb32.dll的文件,其说明是信息存储服务的提供者,看起来好象是它了。于是将其COPY到客户端,重新运行移动邮箱,连接源服务器,打开源邮箱,打开目的邮箱,移动邮件,完成!,太好了。。终于搞定了。。
3、LCS扩展
最后剩下LCS了,我有了经验了,分析也变得更快了,分析了LCSADMIN.MSI的安装过程,一眼就看到了wrtcuser.dll,继续分析依存关系,找到了其他的几个DLL文件。依次注册,果然很顺利的看到了在ADUC里的LCS扩展页。打开看看。。“无法读取用户配置信息”,啊?又有问题了。
继续找DLL文件,LCS的DLL文件很少,全部注册都不行,看来又不是这里的问题,于是执行ADUC里的扩展LCS管理任务,提示为:无法连接到WMI。恩?这个和WMI有关?看看去,于是执行wbemtest列出了WMI的信息,果然发现少了很多关于SIP的类,看来问题在这里,但这些类是怎么放进去的呢。一般来说,WMI里的类是通过MOFCOMP编译MOF文件增加的,但找遍了整个LCS安装文件也没有看到什么MOF文件,又是一件郁闷的事情。。
认真的看了所有的文件,确定没什么遗漏的地方,一筹莫展。。只能继续分析安装过程都做了什么了。打开MSI文件查看安装执行顺序,竟然意外的发现了MOF文件的注册命令。奇怪了,没有MOF文件哪里来的注册命令啊,抱着试试看的态度,我决定安装一下这个管理工具,并且用FILEMON监视安装过程,看看到底是怎么回事。不看不知道,一看吓一跳,FILEMON监视到了安装程序向临时目录里写入了4个MOF文件,这不正是我要的吗?赶紧COPY出来。打开一看,果然是我需要的,手工编译一下,可以了。看来就是它了。
于是将MOF文件加入安装文件,这下可以了,呵呵。。