我正在使用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上运行。
答案 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
在没有高度的情况下适合我。