NT註冊/啓動問題請教

jianghd 2004-08-31 03:48:46
我在NT服務下註冊了一個自己寫的程序,該程序通過配置文件取得與數據庫連接的參數,程序註冊成功,但就是在啓動時報錯。如把與數據庫連接的參數寫死在程序中就能正常啓動。請問這應該如何解決?
...全文
137 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jianghd 2004-09-01
  • 打赏
  • 举报
回复
等于白问了......
大聪 2004-08-31
  • 打赏
  • 举报
回复

function unInstallService(SvcName: string): boolean; //删除指定服务
var
hSCM, hService: SC_HANDLE;
ErCode: DWord;
//if unInstallService('Service1') then
//ShowMessage('unInstall Service success');
begin
Result := false;
hSCM := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
if hSCM = 0 then
begin
ErCode := GetLastError;
{$IFDEF DEBUG}
ShowMessage(SysErrorMessage(ErCode));
{$ENDIF}
exit;
end;
try
hService := OpenService(hSCM, PChar(SvcName),
SERVICE_ALL_ACCESS);
if hService = 0 then
begin
ErCode := GetLastError;
{$IFDEF DEBUG}
ShowMessage(SysErrorMessage(ErCode));
{$ENDIF}
exit;
end;
result := DeleteService(hService);
if not result then
begin
ErCode := GetLastError;
case ErCode of
ERROR_ACCESS_DENIED: ;
ERROR_INVALID_HANDLE: ;
ERROR_SERVICE_MARKED_FOR_DELETE: ;
end;
{$IFDEF DEBUG}
ShowMessage(SysErrorMessage(ErCode));
{$ENDIF}
end;

CloseServiceHandle(hService);
finally
CloseServiceHandle(hSCM);
end;
end;
大聪 2004-08-31
  • 打赏
  • 举报
回复

function InstallService(SvcName, SvcDispName, SvcFullPath: string): integer; //安装指定服务
var
hSCM, hService: SC_HANDLE;
sInfo: string;
//InstallService('Service1', 'Ari''s Service1', 'G:\test\service\AriSerApp.exe');
begin
result := 0;
hSCM := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
if hSCM = 0 then
begin
result := GetLastError;
{$IFDEF DEBUG}
ShowMessage(SysErrorMessage(result));
{$ENDIF}
exit;
end;
try
hService := CreateService(hSCM,
PChar(SvcName),
PChar(SvcDispName),
SERVICE_START, //SERVICE_START OR SERVICE_QUERY_STATUS OR _DELETE, SERVICE_ALL_ACCESS
SERVICE_WIN32_OWN_PROCESS,
SERVICE_AUTO_START, //SERVICE_AUTO_START, SERVICE_DEMAND_START
SERVICE_ERROR_NORMAL,
PChar(SvcFullPath),
nil, nil, nil, nil, nil);

if hService = 0 then
begin
result := GetLastError;
{$IFDEF DEBUG}
ShowMessage(SysErrorMessage(result));
{$ENDIF}
case result of
ERROR_ACCESS_DENIED: sInfo := 'ERROR_ACCESS_DENIED';
ERROR_CIRCULAR_DEPENDENCY: sInfo := 'ERROR_CIRCULAR_DEPENDENCY';
ERROR_DUPLICATE_SERVICE_NAME: sInfo := 'ERROR_DUPLICATE_SERVICE_NAME';
ERROR_INVALID_HANDLE: sInfo := 'ERROR_INVALID_HANDLE';
ERROR_INVALID_NAME: sInfo := 'ERROR_INVALID_NAME';
ERROR_INVALID_PARAMETER: sInfo := 'ERROR_INVALID_PARAMETER';
ERROR_INVALID_SERVICE_ACCOUNT: sInfo := 'ERROR_INVALID_SERVICE_ACCOUNT';
ERROR_SERVICE_EXISTS: sInfo := 'ERROR_SERVICE_EXISTS';
end;
{$IFDEF DEBUG}
messagebox(0,pchar(sInfo),'',mb_iconinformation);
{$ENDIF}
end
else
CloseServiceHandle(hService);
finally
CloseServiceHandle(hSCM);
end;
end;

大聪 2004-08-31
  • 打赏
  • 举报
回复
http://free.efile.com.cn/dacong/Delphi/DBBackup.rar
我也在做系统服务,
用delphi注册可以,就是不能启动
我只好
seivice1.exe/install
这样注册就没问题,
aiirii 2004-08-31
  • 打赏
  • 举报
回复
如你所說:
那檢查: 路徑, 權限
qiujsh 2004-08-31
  • 打赏
  • 举报
回复
应该不是,我做过读注册表的没有问题
jianghd 2004-08-31
  • 打赏
  • 举报
回复
没有问题,我测试过好几次了。我想是不是服务程序不支持运行时读外部资料
qiujsh 2004-08-31
  • 打赏
  • 举报
回复
会不会是读取配置文件路径有问题

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧