我尝试按照
http://edn.embarcadero.com/article/28604重新启动Interbase.
这是一些代码:
这是一些代码:
program IBRestart; {$APPTYPE CONSOLE} uses SysUtils,winsvc; var vManager,vService: SC_Handle; vtmp: TServiceStatus; begin vManager := OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS); if vManager > 0 then begin vService := OpenService(vManager,'InterBaseGuardian',SERVICE_START or SERVICE_STOP); if vService = 0 then // vService is always 0 here,why ? CloseServiceHandle(vManager) else if ControlService(vService,SERVICE_CONTROL_STOP,vTmp) and QueryServiceStatus(vService,vTmp) and (vTmp.dwCurrentState = SERVICE_STOPPED) then begin WriteLn('Success'); end; end; end.
我注意到该服务在服务对话框中列为“InterBase 2009 Guardian gds_db”.我尝试过不同的变种作为OpenService的参数而没有成功……任何提示?
编辑:
net start将服务列为InterBase 2009 Guardian gds_db和InterBase 2009 Server gds_db
在两种情况下,RaiseLastOSError都会返回此项:Project IBRestart.exe引发了异常类EOSError并显示消息“System Error”.代码:1060.指定的服务不作为已安装的服务存在’.
所以上面的代码中vService始终为0.我甚至试图阻止像Themes这样的其他服务,它确实有效.可以是字符串中必须特殊处理的空格吗?我试图关闭IIS Admin,它返回与Interbase相同的错误消息.
解决方法
这是我用于重新启动InterBase 2007的批处理文件,它向您显示在某些计算机上,服务名称中有一个额外的空间:
rem jpl: 20071015 - on some machines,the guardian service has an extra space net stop "InterBase 2007 Guardian gds_db" net stop "InterBase 2007 Guardian gds_db " net stop "InterBase 2007 Server gds_db" net start "InterBase 2007 Guardian gds_db" net start "InterBase 2007 Guardian gds_db " pause
请注意,我停止并启动两次Guardian;有时它在服务停止/开始超时期间没有反应.
我也特意停止了InterBase服务;它几乎不需要,但我有一次监护人服务停止了,但InterBase服务没有停止.
–jeroen
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。