Security 使用ADSI查询服务状态-需要哪些权限?
我正在使用VB6和ADSI查询Windows服务的状态(运行或不运行)。请参阅此MS文章: 对于作为用户组成员的用户,我收到一个抛出的异常。我相信是在GetObject方法上:Security 使用ADSI查询服务状态-需要哪些权限?,security,vb6,active-directory,adsi,Security,Vb6,Active Directory,Adsi,我正在使用VB6和ADSI查询Windows服务的状态(运行或不运行)。请参阅此MS文章: 对于作为用户组成员的用户,我收到一个抛出的异常。我相信是在GetObject方法上: Set comp = GetObject("WinNT://.,Computer") 例外情况是:80070005“一般访问被拒绝错误” 不过,运行与超级用户成员相同的代码,效果很好 将所有用户提升为超级用户不是一个选项。要使此功能成功运行,我需要授予哪些确切的权限 我已尝试运行procmon.exe,但无法从输出中确
Set comp = GetObject("WinNT://.,Computer")
例外情况是:80070005“一般访问被拒绝错误”
不过,运行与超级用户成员相同的代码,效果很好
将所有用户提升为超级用户不是一个选项。要使此功能成功运行,我需要授予哪些确切的权限
我已尝试运行procmon.exe,但无法从输出中确定拒绝发生的内容或位置
谢谢
编辑:这是在XP sp2上运行的。听起来你好像遇到了UAC障碍。我不熟悉IADsService,但在确定Windows服务是否正在运行时几乎不需要它。您是否考虑过使用API函数来查询您的服务?尝试使用“服务查询”状态打开的服务。不需要重量级管理服务或API调用。Shell自动化接口提供此功能已有一段时间了(Win2K或更高版本,Shell32.dll v.5.0或更高版本):
在没有提升的情况下对我来说效果很好。很抱歉,我应该在XP中包含这一点(编辑以包含此小贴士)。谢谢你的链接,我会检查这个界面(不知道为什么我以前的搜索中没有出现)。好的,只是在XP上测试了服务。有限的用户帐户是用户组的成员,可以从正在运行的服务中查询信息,因此ADSI可能在幕后请求了太多的信息。仅供参考,内置的来宾帐户无法查询服务信息,您最好在那里获取正在运行的进程名称列表。我建议您使用API调用,这样您就可以更好地控制流程。是的,对我来说也适用。我还注意到了客户/用户帐户的差异。谢谢
With CreateObject("Shell.Application")
MsgBox .IsServiceRunning("MSMQ")
End With