写了一个windows service来启动我的程序A,并且能监控之,现在服务能够正常注册\删除\启动什么的,但是在操作系统重启后,用户尚未登陆时,该服务已在后台启动了程序A,而A需要根据设置好的系统DSN来访问Oracle数据库(另外一台机器),当我以管理员身份登陆进入操作系统后发现程序A访问数据库失败。即程序A在初始化过程中需要访问一些数据信息,但由于用户未登陆,所以访问数据库失败。我不知道数据库失败的具体原因,表面上看就是未登陆而引起的,因为登陆后,将A关闭,随即这个windows service侦测到A进程不存在了,便create了一个新的,而这个就能访问数据库。不知道是不是跟服务的启动的顺序有关,比如网络还未初始化好(我用的ADO连接数据库,还特意将连接超时设置得比较长,默认是15秒,我设为了100秒,但无效),又或者是系统DSN还没有初始化好…… 所以想请教一下,编写这种windows service的时候有没有什么手段来解决此类问题。而且我发现有关windows service编程的信息比较少,codeproject上也就那么几个,高手们能否提供几个链接?
解决方案 »
- 基于对话框的程序,想把四个PropPage添加到主对话框的同一个固定区域。
- 菜单项的id是什么意思,有什么用
- 迷惑SKD里的GetDlgItem()
- 难道用自己的电脑拨号上网使用的不是IP协议?
- 如何在VC中使用Flash控件
- 好久没来了,最近苦学MFC,给大家散点分,一起加加油
- 关于ActiveX控件的数字签名和认证问题
- 请高手指点:在vc里编写的ActiveX控件中,如何加一个Vb里ADODB.Recordset类型的属性,并且在vb调用该ActiveX控件时能传该类型的变量!
- 关于用VC进行ODBC编程的一个问题
- 在vc中怎样调用bios的中断
- 在FormView中摆了些控件,其余地方为绘图区,有没有像Delphi中PaintBox的控件,往它上边画,还是直接往FormView上画?
- 有没有作过串口通信的,调式问题,高手严重帮助下我,谢谢了
SC_HANDLE CreateService(
SC_HANDLE hSCManager,
LPCTSTR lpServiceName,
LPCTSTR lpDisplayName,
DWORD dwDesiredAccess,
DWORD dwServiceType,
DWORD dwStartType,
DWORD dwErrorControl,
LPCTSTR lpBinaryPathName,
LPCTSTR lpLoadOrderGroup,
LPDWORD lpdwTagId,
LPCTSTR lpDependencies,
LPCTSTR lpServiceStartName,
LPCTSTR lpPassword
);
lpDependencies
[in] Pointer to a double null-terminated array of null-separated names of services or load ordering groups that the system must start before this service. Specify NULL or an empty string if the service has no dependencies. Dependency on a group means that this service can run if at least one member of the group is running after an attempt to start all members of the group.
You must prefix group names with SC_GROUP_IDENTIFIER so that they can be distinguished from a service name, because services and service groups share the same name space.,服务控制器会事先启动你依赖的服务,再启动你的服务