- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个程序,允许使用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;
因此,当输入的用户名和密码正确时,程序将返回组的路径当出现错误的“未访问”时。
如果我第一次输入正确的用户名和密码,该功能可以正常工作,或者如果我输入错误的用户名和密码数据,该功能也可以正常工作。
问题是当我第二次调用该函数时,它无法按预期工作,如下所示:
当我运行程序并首先输入错误的密码并调用我的函数时,“未访问”将按预期出现,但如果我记忆该函数,即使使用正确的密码,它也会返回“未访问”。
此外,当我运行程序并首先输入正确的密码并调用我的函数时,组路径会按预期显示,但如果我使用错误的密码记忆该函数,它也会返回路径。
看起来我的连接数据已保存,我需要释放内存,但我不知道如何。
任何机构可以帮忙吗?
最佳答案
我终于找到了问题的解决方案,它看起来像本文中描述的 Microsoft API 问题: http://support.microsoft.com/kb/218497
实际上,API 函数 ADsOpenObject 正在使用您传递的凭据打开与服务器的连接,但它永远不会关闭该连接,我尝试关闭它,但它在 session 中没有关闭,所以我首先使用另一个 API 来检查对象是否存在,看看这个对我有用的函数:
procedure ShowADSPath(UserName, Password: widestring);
function CheckObject(APath: String): IDispatch;
var
Moniker: IMoniker;
Eaten: integer;
BindContext: IBindCtx;
Dispatch: IDispatch;
begin
Result := nil;
OleCheck(CreateBindCtx(0, BindContext));
OleCheck(MkParseDisplayName(BindContext, PWideChar(WideString(APath)),
Eaten, Moniker));
OleCheck(Moniker.BindToObject(BindContext, nil, IDispatch, Dispatch));
Result := Dispatch;
end;
var Group : IADs;
begin
try
if CheckObject('WinNT://Server/Group1,group') <> nil then
OleCheck(ADsOpenObject('WinNT://Server/Group1,group',
UserName,
Password, ADS_SECURE_AUTHENTICATION, IADs, Group));
if (Group <> nil) and (Group.Class_ = 'Group') then
begin
ShowMessage(Group.ADsPath);
Group.release;
Group:= nil;
end;
except
ShowMessage('NOT ACCESSDE');
end;
end;
关于delphi - ADSI 无法使用 ADsOpenObject 打开对象。德尔福,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23675677/
是否有适用于 Delphi 2006/2007/2009 的 FitNesse 版本? 如果可以的话我在哪里可以找到它? 还有其他类似 FitNesse 的程序可以在 Delphi 2006 上运行吗
在 MDI 应用程序中有一个打开的模态表单 A。表单 B 从表单 A 中显示为模态。 如何在调用模态表单 B 后关闭模态表单 A? 最佳答案 模态意味着终生嵌套。当一个模态表单打开另一个模态表单时,第
我一直在写一些通过 URL 下载指定网页源代码的函数: function GetWebPage(const url: string): tStringList; var idHttp: TidHt
我正在寻找一种在 Delphi 中使用我的网络摄像头的方法,主要用于抓取图片,由于某些原因我无法使用 TWAIN 驱动程序。 最佳答案 尝试这些资源 DSPack DSPack is a set of
我正在寻找用于 delphi 的数据感知 TreeView 什么是最好用的? 最佳答案 Virtual TreeView 是最快的,功能最多的,最好的,而且是免费的!(对于数据感知,有免费的 desc
这个问题已经有答案了: How to copy the properties of one class instance to another instance of the same class?
我想为我的应用程序使用大型倒十字光标。但我的代码使光标背景反转。光标仍为白色。 var IconInfo: TIconInfo; AndMask, Bmp: TBitmap; w, h:
[DCC Fatal Error] Unit1.pas(7): F1026 File not found: 'MyBitBtn.dcu' Unit1 是用于测试目的的 VCL 表单。 我已经安装了一个
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
是否可以删除 TabSheet 的边框(~4px)?我使用 PageControl 作为开关面板,而不是框架、窗口等。我希望一切都是直的。 最佳答案 unit Unit1; interface use
我有java代码从文本文件填充 HashMap 。 HashMap data = new HashMap(); 我用它来制作键值对。值是一个字符串数组。我必须迭代键值对的每个可能的组合(因此还必须迭代
如何更改mp3文件的恒定比特率(CBR)? (例如64kbps-128kbps-192kbps) 最佳答案 您需要重新编码mp3。由于我不知道用Delphi编写的mp3编解码器不错,因此您需要在c库(
当我迭代窗体上的控件时,我会看到在设计时或运行时放置在其中的控件。它们都是TEdit,Tmemo,TComboBox等类型的... 但是,总有八种我不认识。我可以跳过它们,因为它们不是我感兴趣的类型,
我认为这是一个愚蠢的问题..但是..当在Delphi中声明另一个类的子类时, children 是否直接获得了 parent 的方法? 解释: 名为“P”的类是名为“C”的类的父类,“P”类有一个名为
正在尝试将数据发布到 https://www.facebook.com/login.php使用突触 delphi 库但没有任何结果。帖子数据来自 mozila headers viewer。 答案?
我在使用 PHP + Delphi 9 + Firebird 检索大量数据时遇到问题。 应用程序屏幕截图 我在 Delphi 应用程序中有一个名为 "checks"的按钮,当我单击该按钮时,它会根据函
我正在将我的 Delphi 7 应用程序迁移到 Delphi 2010。我们使用了 Open XML(来自 http://www.philo.de/)。 在 Delphi 2010 中,它似乎已经内置
在以下代码中: type TDoubleDWORD = record L, H: Longint; end; function BitSelection(const Block:
我喜欢这个工具栏。我在哪里可以找到它? 谢谢 最佳答案 您可以实现与使用标准 Delphi 组件类似的功能(至少非常类似): 将 TControlBar 添加到表单 将其 DrawingStyle 设
如何使用 Zeos 在 firebird 中创建 autoinc 字段。 -布拉德 最佳答案 Firebird FAQ #29中有解释。请参阅该页面的底部。 关于德尔福 Firebird 汽车公司,我
我是一名优秀的程序员,十分优秀!