我嘗試按照http://edn.embarcadero.com/article/28604重新啓動Interbase。 下面是一些代碼:如何重新啓動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衛gds_db」。我已經嘗試過OpenService的參數的不同變體,但沒有成功......任何提示?
編輯: 網啓動列表,的InterBase 2009年衛gds_db服務和的InterBase 2009年服務器gds_db
RaiseLastOSError在這兩種情況下,返回此:項目IBRestart.exe引發的異常類EOSError與消息「系統錯誤。代碼:1060.指定的服務不作爲已安裝的服務存在「。
因此,vService在上面的代碼中始終爲0。我甚至試圖阻止另一種服務,如主題,它實際上工作。它可以是字符串中必須特別處理的空格嗎?我試圖關閉IIS Admin,並且它返回與Interbase相同的錯誤消息。
優秀。這對我來說就夠了! – 2010-01-04 10:18:35
很高興它爲你工作得那麼好! – 2010-01-04 13:32:31