| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 
课件制作网.
收藏本站
设为首页
安全365
如何确定登录用户的 ADsPath?
如何确定登录用户的 ADsPath?
作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-24 11:08:19
问:

您好,脚本专家!在我的 HTA 中,如何确定登录用户的 ADsPath?

-- AC

答:

您好,AC。你知道,人们在 Microsoft 工作时,会自然而然地以为自己是在象牙塔中度日,完全不需要日常活动和系统管理员。说老实话,事实不是这样:我们的塔可比象牙塔更结实、更坚固。

哦,Dean 的办公室除外。

至于完全不需要日常活动和系统管理员,嗯,这可能还有点真实成分在内。例如,脚本专家会花费大量时间编写脚本,回答有关脚本的问题,但是我们很少发现自己能坐下来编写在实际工作中使用的脚本。这未必是好事。不过,它却科技写作工作的本质。正应了那句老话,不能者(或至少不为者)教人。

然而,我们常常确实被要求编写真正的脚本。就在一、两周前,就发生了这样一件偶然的事情,凑巧的是,我们被问及是否能做到与您现在正在询问的相同的事情:确定登录用户的 ADsPath。事实证明,我们能做到,并且为此很快整理出了一个脚本。现在我们就公开这个秘密。

让我们首先为您展示如何在一个过去使用的纯 VBScript 脚本中去实现,然后为您展示在 HTA 中嵌入代码的简单方法。下面的脚本将返回登录用户的 ADsPath:

On Error Resume Next



Set objSysInfo = CreateObject("ADSystemInfo")



strUser = objSysInfo.UserName

Set objUser = GetObject("LDAP://" & strUser)



Wscript.Echo objUser.AdsPath

注意:当然,该脚本的确相当简单。但别忘了,我们可没说在这个实际脚本上下了功夫,我们只是说我们真正为一个实际脚本做了一些工作。

该脚本首先创建 ADSystemInfo 对象实例:

Set objSysInfo = CreateObject("ADSystemInfo")

顺便说一句,这是一个非常有用的对象,它可以返回有关登录用户和本地计算机的各种信息。(您可以看一下此脚本,以便对能使用 ADSystemInfo 返回的信息有所了解。)此脚本的一个缺点是它只能在本地创建:您无法在远程计算机上创建 ADSystemInfo 实例,然后获得在计算机上登录的用户的信息。是的,要是能这样的话可就酷极了。但是,这却无法实现。

ADSystemInfo 返回的信息中有一项是 UserName。UserName 实际上是登录用户用于和其他用户区别的名称;类似于:

CN=Ken Myer,OU=Finance,dc=fabrikam,dc=com

至此,我们自己便可以真正构造 ADsPath;毕竟,ADsPath 是简单的 LDAP:提供程序加上用于和其他用户区别的名称:

LDAP://CN=Ken Myer,OU=Finance,dc=fabrikam,dc=com

但是,我们想为您展示一种使用 ADSystemInfo 的更通用的方法,因此,我们决定继续进行,使用下面两行代码绑定到 Ken Myer 用户帐户:

strUser = objSysInfo.UserName

Set objUser = GetObject("LDAP://" & strUser)

正如您所看到的,我们所做的一切就是获取 UserName 属性值,将其存储在名为 strUser 的变量中,然后在将我们绑定到此用户帐户的 GetObject 调用过程中使用该变量。

此后我们只需回显 ADsPath 属性的值;于是,看到我们连接到 Ken Myer 用户帐户时,我们就能轻松地回显 Ken 的帐户属性的任何(或全部)值。

确实很容易,不是吗?

现在,在 HTA 中使用这行代码又怎样呢?正好,这里有一个很简单的示例:

<html>

<head>

    <title>ADSystemInfo Sample</title>

</head>



<SCRIPT LANGUAGE="VBScript">



    Sub Window_OnLoad

        On Error Resume Next



        Set objSysInfo = CreateObject("ADSystemInfo")



        strUser = objSysInfo.UserName

        Set objUser = GetObject("LDAP://" & strUser)



        DataArea.InnerHTML = objUser.AdsPath

    End Sub



</SCRIPT>



<body>



    <span id=DataArea></span>



</body>

</html>

此 HTA 仅包含一个元素:名为 DataArea 的 <span> 标记。HTA 启动时,运行名为 Window_Onload 的子例程。(每当启动或刷新 HTA 时,具有该名称的子例程就自动运行。)Window_Onload 子例程的代码看上去应该很熟悉:

On Error Resume Next



Set objSysInfo = CreateObject("ADSystemInfo")



strUser = objSysInfo.UserName

Set objUser = GetObject("LDAP://" & strUser)



DataArea.InnerHTML = objUser.AdsPath

没错:它就是我们刚刚为您展示过的脚本,但是有一点不同:我们不是使用 Wscript.Echo 回显登录用户的 AdsPath,而是使用以下这行代码将 AdsPath 写入 <span> 标记:

DataArea.InnerHTML = objUser.AdsPath

现在,看看吧,这像是坐在象牙塔里的人能编写出来的那类脚本吗?

是的,既然您提到了……

【转自世纪安全网 http://www.21safe.com】
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    用户注册邮箱被盗 MSN已
    用户注册邮箱被盗 MSN已
    CSO们如何应对新技术的安
    普通企业如何应对黑客攻
    企业该如何防范由VoIP引
    浅谈IT如何实现企业的应
    黑客与正规企业是如何串
    如何无限制申请Gmail 2.
    企业如何避免人为因素的
    社会工程学:如何利用黑客

    Copyright © 2006-2008 www.anquan365.com 安全365
    建议使用1024*768分辨率及第三方浏览器对本站进行浏览