使用ADSI查询服务状态 - 需要哪些权限?

时间:2011-03-22 21:59:30

标签: security vb6 active-directory adsi

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

不需要重量级管理服务或API调用。 Shell Automation界面提供了一段时间(Win2K或更高版本,Shell32.dll v.5.0或更高版本):

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

在没有高度的情况下适合我。