【问题标题】:MapNetworkDrive will accept any passwordMapNetworkDrive 将接受任何密码
【发布时间】:2011-04-12 13:02:44
【问题描述】:

我正在编写一个脚本,用于向我工作的学校的学生提供的 Windows 笔记本电脑添加网络共享。

脚本是用VBS编写的,并且使用了MapNetworkDrive函数,所以非常简单,只有两个对话框询问用户名和密码。但是当我用我自己的用户名测试它时,它会完全忽略我输入的密码,并且可能会使用存储在某处的密码,因为它总是映射驱动器。有谁知道这些凭据存储在 Windows 7 中的什么位置? (它没有存储在凭证存储中,我检查过)

【问题讨论】:

    标签: windows windows-7 vbscript wsh


    【解决方案1】:

    凭据根本没有存储在任何地方。相反,Windows 使用当前登录用户的凭据来验证与共享资源的连接。也就是说,如果当前登录到 local 机器的用户的用户名和密码与 remote 机器上具有相应凭据的用户匹配,则访问权限将是授予。

    让我看看我是否可以通过一个例子更清楚地解释这一点。假设我使用用户名“Cody Gray”和密码“1234”登录到我的笔记本电脑。然后,我尝试在我的台式计算机上启动与共享资源的连接。由于我在台式计算机上具有相同的用户名和密码,并且该用户帐户具有足够的权限来远程连接到共享资源,因此我将自动获得身份验证并自动授予访问权限。但是,如果我尝试连接到我没有帐户的同事的一台机器,我将需要提供具有有效访问凭据的用户名和密码。

    您提供给 WSH MapNetworkDrive 方法的用户名和密码仅在当前登录用户的凭据未能成功验证时使用。 documentation 说:

    strUser

    可选。表示用户名的字符串值。如果您使用当前用户以外的其他人的凭据映射网络驱动器,则必须提供此参数。

    strPassword

    可选。表示用户密码的字符串值。如果您使用当前用户以外的其他人的凭据映射网络驱动器,则必须提供此参数。

    简而言之,出于测试目的,您可能会在计算机上创建一个与服务器上的帐户不直接对应的新帐户。如果学生已经在服务器上拥有账户,则没有理由要求他们再次输入用户名和密码; Windows 已经知道它是什么,它将自动用于身份验证。

    【讨论】:

    • 非常感谢您的回答!我不知道它会首先检查本地用户的凭据,即使提供了 strPassword,但在我正在做的测试中它不应该工作。本地用户的用户名相同,但密码不同。知道接下来会发生什么吗?
    • @Dimse:嗯,不知道。不同的密码应该会阻止您连接。这两个帐户有不同的密码,但你会自动连接?您是否已从同一服务器连接到不同网络资源?如果是这种情况,您也不需要身份验证。另一种选择是尝试 WMI 而不是 MapNetworkDrive 函数。你需要像ConnectServer 这样的东西。它采用相似的论点并以相似的方式工作,因此它可能也不适合您。
    • 我不应该连接,当我运行 net use /DELETE * 它告诉我没有活动连接,但我之前已经连接过,也许它从那时起记住了密码。谢谢,我回去工作后会尝试使用 WMI :)
    猜你喜欢
    • 2014-01-30
    • 1970-01-01
    • 2019-03-19
    • 2017-06-25
    • 2017-03-02
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多