delphi – 如何重启Interbase
我尝试按照
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的参数而没有成功……任何提示? 编辑: 在两种情况下,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;有时它在服务停止/开始超时期间没有反应. –jeroen (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |