【发布时间】:2014-05-15 10:30:52
【问题描述】:
我有一个允许使用 windows 登录信息登录的程序,我试图在用户输入密码时获取 windows 组成员,我写了一个类似于我的代码的小函数:
procedure ShowADSPath(UserName, Password: widestring);
var Group : IADs;
begin
try
OleCheck(ADsOpenObject('WinNT://Server/Group1',
UserName,
Password, ADS_SECURE_AUTHENTICATION, IADs, Group));
if (Group <> nil) and (Group.Class_ = 'Group') then
ShowMessage(Group.ADsPath);
Group.release;
Group:= nil;
except
ShowMessage('NOT ACCESSDE');
end;
end;
所以当输入的用户名和密码正确时,程序会返回组的路径 当出现错误的“未访问”时。
如果我第一次输入正确的用户名和密码,或者输入错误的用户名和密码数据,该功能也可以正常工作。
问题是当我第二次调用该函数时,它不能按预期工作:
当我运行我的程序并首先输入错误的密码并调用我的函数时,“未访问”将按预期显示,但如果我使用正确的密码调用该函数,它也会返回“未访问”。
另外,当我运行我的程序并首先输入正确的密码并调用我的函数时,组路径会按预期显示,但如果我用错误的密码调用函数,它也会返回路径。
我的连接数据似乎已保存,我需要释放内存但我不知道如何。
任何机构都可以提供帮助?
【问题讨论】: