【问题标题】:Java accessing WMI as a particular userJava 以特定用户身份访问 WMI
【发布时间】:2010-08-20 10:27:12
【问题描述】:

我正在尝试编写一个 Java 应用程序,它将查询域内 Windows 主机上的 WMI,以获取它们的 mac 地址和 dns 名称。我可以通过 exec 或使用我在 Internet 上找到的一些 jar 来运行脚本,但我所看到的没有一个允许我在运行查询时模拟 AD 帐户。

我希望能够指定运行查询的帐户(该域的管理员),该程序可能在不在域中的机器上运行,或者我将查询两个域。

我查看了 JACOB 和 com4J,但找不到它进行模拟的示例。

另外,我无论如何都不是高级程序员,如果我错过了一些显而易见的事情,请道歉

提前致谢。

【问题讨论】:

    标签: java wmi wmi-query


    【解决方案1】:

    如果你使用SWbemLocatorConnectServer方法,你可以指定用户名和密码连接到另一台机器。但是,您不能使用此方法连接到运行代码的机器。

    如果您只是调用脚本,请考虑使用 Python。在wmi Cookbook

    中有一个很好的例子说明如何使用 python 来做到这一点

    【讨论】:

    • 我从来没有使用过 python,但它是一个选项,我会尝试使用 SWbemLocator 并发布我的使用方法 - 谢谢
    • 非常感谢 - 使用了 SWbemLocator 并更改了我的测试应用程序,可以使用 AD 帐户查询并通过。
    【解决方案2】:

    您可以通过调用runas 来包装exec 命令行,这将以指定用户身份运行命令。

    【讨论】:

    • 我尝试使用 runas,但它只允许您保存凭据或在执行 runas 时输入它们,无论哪种方式我都无法找到传递密码的方法,我读过的一篇文章建议您实际上无法在运行时通过设计传递密码。
    • nlr 软件有一个替代方案,“runnas”,它允许您将凭据保存到文件中。
    猜你喜欢
    • 1970-01-01
    • 2015-09-13
    • 2016-09-14
    • 2018-11-25
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 2016-11-21
    • 2010-11-08
    相关资源
    最近更新 更多