0

我正在使用 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 上运行的。

4

2 回答 2

2

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

于 2011-03-23T06:21:08.653 回答
0

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

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

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

于 2011-03-24T22:33:05.323 回答