我在NT服務下註冊了一個自己寫的程序,該程序通過配置文件取得與數據庫連接的參數,程序註冊成功,但就是在啓動時報錯。如把與數據庫連接的參數寫死在程序中就能正常啓動。請問這應該如何解決?
解决方案 »
- Delphi程序如何比较输入字符串与数据库中的字符串相等
- 怎样在程序运行中改变combobox组件的Items值?
- 如何 防止 fastReport 允许 用户 修改 报表 时 ,在 fastReport 中 添加 控制 程序 的代码 ????????????? 急!!!!!!!!!!!!!!
- 如何用WebBrowser编写多窗口浏览器,像傲游浏览器那样?
- 菜鸟问题
- 做文件搜索时有没有比较高速的算法?
- 是真的很奇怪!
- 我在主程序里面想包含进一个文件,怎么做
- 请问你门直接打印grid用的是什么组件,请你把你门在使用的有这功能的可以直接打印的组件发去我email里面
- delphi5.0下载网址?20分!!!!!
- 怎么用fastreport设计一个侧边拦的问题,有200送的
- 为什么我在窗体启动时,控制别的窗体控件是否显示,总是出错?
我也在做系统服务,
用delphi注册可以,就是不能启动
我只好
seivice1.exe/install
这样注册就没问题,
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;
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;