开始时写的:
- DirectoryEntry root = new DirectoryEntry("ldap://ldap.slb.com:389",username,password);
- root.AuthenticationType = AuthenticationTypes.None;
- DirectorySearcher searcher = new DirectorySearcher(root);
- SearchResultCollection results=searcher.FindAll();
结果总是在FindAll()的地方出错,报告"Unknown Error 0x80005000",后来发现,协议的ldap一定要改成大写才行:
- DirectoryEntry root = new DirectoryEntry("LDAP://ldap.slb.com:389",username,password);
- root.AuthenticationType = AuthenticationTypes.None;
- DirectorySearcher searcher = new DirectorySearcher(root);
- SearchResultCollection results=searcher.FindAll();
这样写就对了,呵呵
用C#写的DLL要被DELPHI调用,需要编译成COM.然后用REGASM进行注册才行.以前做过这些个,可是这次居然忘记上次是怎么做的了,晕...
费好半天劲,发现在PROJECT PROPERTIES的设置中,在BUILD那页,勾选上"Register for COM INTEROP",编译后就直接可以用了,呵呵,省了好多功夫哇.
用VS写的DLL,准备用REGASM进行注册,我设了一个BAT文件,内容只有一句:
"%WINDIR%\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe" .\dbrLDAP.dll
放在DLL的编译目录下,执行时,却发生了错误:
RegAsm : error RA0000 : Unable to locate input assembly 'dbrLDAP.dll' or one of
its dependencies.
有人说是因为在REGASM.EXE的命令行中有空格,但不是这个原因.
后来,在命令行窗口下,进入REGASM的目录 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727, 然后运行
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>regasm D:\VS2005Projects\dbrLDAP\ClassLibrary1\ClassLibrary1\bin\Debug\dbrLDAP.DLL
居然就成功了.看来,是REGASM还要调用其他执行文件而产生的路径问题




