2012-05-01 143 views
1

我得到一个EOSError代码5 - 当012erTServiceApplication尝试向 服务管理器注册服务时拒绝访问。如何找出为什么我得到EOSError代码5 - 访问被拒绝注册服务?

我正在使用XE2 Win7 64位。 32位和64位 目标都会出现错误。

我有一个使用ADO连接到数据库的数据模块,并且网络服务器代码为 。所有的代码都在WinUI项目中使用,其中 工作。我也有一个基于相同核心代码的未经测试的ISAPI DLL。

这是我第一次尝试将Web服务服务器 合并到NT服务中。

我已经追踪了VCL代码,它在 Vcl.SvcMgr的1027行产生了错误,但我不知道为什么我得到访问被拒绝错误。 I 已经写了其他通过ADO 连接到数据库的NT服务,并且没有遇到这样的错误(尽管用XE编写)。

任何指针,将不胜感激。

回答

4

您可能会遇到UAC权限问题,该问题期望您以提升状态运行服务安装过程,例如从通过“以管理员身份运行”选项启动的cmd.exe实例运行,但您不实际上这样做。如果您只有一些服务而不是其他服务,则受影响的服务可能不包含UAC清单,但包含触发UAC的安装程序检测功能的特征,通常(但不限于)在服务的文件名中包含保留关键字或版本资源。

+0

但是,除了询问堆栈溢出并对此进行教育性猜测之外,*你如何找出为什么*你得到“拒绝访问”的消息?这就是问题所在。 –

+0

无法确定访问被拒绝的具体原因(如果原因被报告给失败的调用者,那将是一个安全漏洞)。您只需知道Access Denied错误与权限有关,因此您必须查看您的应用正在执行的操作是否涉及受权限保护的资源,直到找到罪魁祸首。 –

+0

谁说需要向呼叫者报告?也许它在其他地方被报告过,具有管理权限的人可以阅读它。 –