写了一个windows service来启动我的程序A,并且能监控之,现在服务能够正常注册\删除\启动什么的,但是在操作系统重启后,用户尚未登陆时,该服务已在后台启动了程序A,而A需要根据设置好的系统DSN来访问Oracle数据库(另外一台机器),当我以管理员身份登陆进入操作系统后发现程序A访问数据库失败。即程序A在初始化过程中需要访问一些数据信息,但由于用户未登陆,所以访问数据库失败。我不知道数据库失败的具体原因,表面上看就是未登陆而引起的,因为登陆后,将A关闭,随即这个windows service侦测到A进程不存在了,便create了一个新的,而这个就能访问数据库。不知道是不是跟服务的启动的顺序有关,比如网络还未初始化好(我用的ADO连接数据库,还特意将连接超时设置得比较长,默认是15秒,我设为了100秒,但无效),又或者是系统DSN还没有初始化好…… 所以想请教一下,编写这种windows service的时候有没有什么手段来解决此类问题。而且我发现有关windows service编程的信息比较少,codeproject上也就那么几个,高手们能否提供几个链接?
解决方案 »
- 程序A启动 调用B.exe 如何关闭程序A 后,B自己关闭。谢谢!
- 已知面怎么得到体?
- 笔段LED类实现倒计时显示,无法刷新重画?
- 微软是个寂寞高手
- 怎么样让STATIC TEXT控件的背景透明?
- 如何得到数据库中表单的个数
- 请问mapinfo中的世界坐标转化为屏幕坐标的函数是如何实现的,算法是什么?
- 得到视频流的buf了,怎么将它进行播放啊
- VC TeeChart 鼠标点击曲线如何显示曲线上点的坐标?
- 有多个终端同时对服务器sql server 2000的一个表进行插入操作,结果在终端上发生内存泄漏,这是怎么回事?
- 在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.,服务控制器会事先启动你依赖的服务,再启动你的服务