【问题标题】:Querying Service Status with ADSI - what rights are needed?使用 ADSI 查询服务状态 - 需要哪些权限?
【发布时间】:2011-03-22 21:59:30
【问题描述】:

我正在使用 VB6 并使用 ADSI 来查询 Windows 服务的状态(运行与否)。请参阅这篇 MS 文章:http://msdn.microsoft.com/en-us/library/aa746322(v=vs.85).aspx

对于属于 USERS 组成员的用户,我收到了抛出的异常。我相信它在 GetObject 方法上:

Set comp = GetObject("WinNT://.,Computer")

例外是:80070005“一般访问被拒绝错误”

但是,作为 POWER USERS 的成员运行相同的代码,效果很好。

将所有用户提升为高级用户不是一种选择。我需要授予哪些确切权限才能成功运行此功能?

我已尝试运行 procmon.exe,但无法从输出中确定拒绝发生的内容或位置。

谢谢!

编辑:这是在 XP sp2 上运行的。

【问题讨论】:

    标签: security vb6 active-directory adsi


    【解决方案1】:

    听起来您遇到了 UAC 障碍。我不熟悉 IADsService,但几乎没有必要确定 Windows 服务是否正在运行。您是否考虑过使用 API 函数来查询您的服务?在使用 SERVICE_QUERY_STATUS 打开的服务上尝试 QueryServiceStatus

    【讨论】:

    • 我很抱歉,我应该在 XP 上包含这个(编辑以包含这个花絮)。感谢您的链接,我会检查该界面(不知道为什么它没有出现在我之前的搜索中)。
    • 好的,刚刚在 XP 上测试了服务。受限用户帐户是用户组的成员,可以从正在运行的服务中查询信息,因此 ADSI 可能在幕后请求太多信息。仅供参考,内置的访客帐户无法查询服务信息,您可以做的最好的事情是获取正在运行的进程名称列表。我建议使用 API 调用,以便更好地控制流程。
    • 是的,也适合我。而且我还注意到来宾/用户帐户的区别。谢谢!
    【解决方案2】:

    不需要重量级的管理服务或 API 调用。 Shell Automation 接口提供此功能已有一段时间了(Win2K 或更高版本,Shell32.dll v. 5.0 或更高版本):

    With CreateObject("Shell.Application")
        MsgBox .IsServiceRunning("MSMQ")
    End With
    

    在没有海拔的情况下对我来说很好。

    【讨论】:

      猜你喜欢
      • 2012-03-11
      • 2019-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-28
      • 2013-01-18
      • 2019-11-28
      相关资源
      最近更新 更多