我使用mstscax.dll控件开发远程桌面客户端程序,编译exe后把一个mstscax.dll文件拷到exe目录,执行后发现exe调用的控件仍然是系统目录下的mstscax.dll文件。    但是从xp的机器上拷贝一个mstsc5.2版本的mstsc.exe和mstscax.dll文件到任意目录,然后执行mstsc登录远程桌面,发现此时mstsc.exe程序调用的控件正是当前目录下的mstscax.dll控件,请问这是如何做到的,我自己开发的程序为什么不能调用当前目录下的控件呢,谢谢!(mstsc5.2下载地址http://download.csdn.net/detail/jamseyang/5196321)

解决方案 »

  1.   

    这个mstscax.dll是个com库,不是普通的dll,exe调用时是根据mstscax.dll的GUID去查找注册表,然后从注册表中找到dll的位置来进行加载的.你想要调用当前目录下的,可以手工注册下,比如是在C:\MyFolder\mstscax.dll,就regsvr32 c:\MyFolder\mstscax.dll,不过其他要用这个dll的exe也会到这里来找这个dll.
      

  2.   

    你修改下注册表的信息,让其寻找的是你指定路径下的组件,可以根据progid,clsid来修改
      

  3.   

    从xp的机器上拷贝一个mstsc5.2版本的mstsc.exe和mstscax.dll文件到任意目录,然后执行mstsc登录远程桌面,发现此时mstsc.exe程序调用的控件正是当前目录下的mstscax.dll控件
    我并没有用regsvr32注册这个拷贝过来的mstscax.dll,也没有修改注册表,但是调用却是当前目录下的mstscax.dll
      

  4.   

    这就要看mstsc.exe是怎么加载的了,实际上直接去LoadLibrary过来调用dll导出的4个函数就能完成所有的功能,只是用不着ms的com库为你封装好的功能.