问题是即使用户是管理员,它在Windows 7中也显示错误的状态.
启动,停止按钮被禁用并启用安装按钮,状态颜色为灰色,这也是错误的.应启用启动按钮,服务状态显示为绿色 – 应用程序正在运行.
如果应用程序使用“以管理员身份运行”设置运行,则表明其运行正常.
该应用程序是用Delphi 7编写的,在其他版本的windows中运行良好.
这行代码:
OpenSCManager(PChar(sMachine),Nil,SC_MANAGER_ALL_ACCESS);
永远在Win7下返回0,导致问题.
任何想法,如果可能的话,除了“以管理员身份运行”之外的任何解决方法.
解决方法 如果请求有限访问权限,则无需管理员权限即可打开服务管理器.这行代码:ManagerHandle := OpenSCManager(nil,SERVICES_ACTIVE_DATABASE,SC_MANAGER_ENUMERATE_SERVICE);
即使在受限用户帐户中使用,也会使用服务管理器打开活动服务的数据库.然后可以使用返回的句柄调用EnumServicesStatusEx()
以获取有关正在运行的服务的信息.
传递SC_MANAGER_ALL_ACCESS作为DWDesiredAccess参数意味着传递SC_MANAGER_CREATE_SERVICE,并且文档说明:
Only processes with administrator privileges are able to open a database handle that can be used by the CreateService function.
因此,如果您将程序限制为可由标准用户执行的 *** 作,那么您的代码应在windows 7上无需更改即可运行.其他所有内容都需要由安装程序或运行提升的特殊程序完成.
这是BTW没有新的要求windows 7,你的声明
The application is written in Delphi 7 and works perfectly in other versions of windows.
仅显示您从未在早期版本的 *** 作系统中在有限帐户上正确测试应用程序.使用windows NT(近20年前),不允许有限用户以完全访问权限打开服务管理器,因此代码将在那里失败.
总结以上是内存溢出为你收集整理的delphi – 列出Win-7下的服务和服务状态全部内容,希望文章能够帮你解决delphi – 列出Win-7下的服务和服务状态所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)