CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

关于WIN NT服务程序:不能在服务程序中进行读写文件吗?高手请进!

楼主windfantasy(风之幻想)2002-09-10 19:10:36 在 Delphi / VCL组件开发及应用 提问

我写了段在NT下运行的服务程序,/install后在windows的服务程序列表里无法正常“启动”,说是“服务程序内部的错误”。  
  由于我的服务程序是要从一个配置文件中读配置信息进行初始化设置,读文件的部分很简单,没有错误,但是放在服务程序中就是无法正常运行。经过调试发现,如果做成一般的应用程序则可以正常运行。或者我把读文件的部分去掉,把配置信息直接在程序中赋给相应变量,服务程序即可正常运行。但是这样一来,程序就做死了,如果要修改配置,必须重新修改程序源代码并且重新编译才行。而我应用又是需要经常变动配置信息的。不知这儿谁有编写过服务程序的经验的,或者看到过类似情况的,望不吝赐教!十万火急! 问题点数:50、回复次数:6Top

1 楼windfantasy(风之幻想)回复于 2002-09-10 19:16:35 得分 0

难道说服务程序中不能对外部文件进行读写吗?应该没这么限制死吧?  
  还是有特殊的方法?或者是别的什么原因?  
  有做服务程序的人吗?帮帮我吧!Top

2 楼hzb(Explorer)回复于 2002-09-10 19:18:06 得分 20

检查一下你读配置文件的代码。在服务程序中,要获取服务程序的路径不能用通常的paramstr、getcurrentdir等方法,这样的得到的是system路径。要读取当前路径,用下面的函数:  
  FUNCTION   GetCurrentDirEx():   ansistring;  
  VAR  
      ModuleFileName                         :   ARRAY[0..MAX_PATH]   OF   Char;  
  BEGIN  
            GetModuleFileName(HInstance,   @ModuleFileName[0],   MAX_PATH);  
          //取得当前文件名  
    result   :=   IncludeTrailingBackslash(ExtractFilePath         (ModuleFileName))   ;  
  END;  
  也许你的情况不同,如果不行的话,把读文件的代码贴出来看看。Top

3 楼windfantasy(风之幻想)回复于 2002-09-10 19:57:11 得分 0

果然是路径的问题,多谢楼上的!真是帮了我大忙了。  
  不过没有你那么复杂,只要把配置文件的绝对路径写进程序就行了。  
  但是写绝对路径总是不太好,万一配置文件移到别处了程序就无法正常运行了。  
  不知服务程序注册到WINDOWS之后其工作路径是什么地方啊?  
  应该在注册表里吧,但是在什么地方呢?  
  有人知道吗?Top

4 楼hzb(Explorer)回复于 2002-09-10 20:16:14 得分 30

你在哪里注册的,工作路径就是哪里,不在注册表。所以一般都是把配置文件放在执行文件所在目录,然后获取执行文件目录来读配置文件。Top

5 楼windfantasy(风之幻想)回复于 2002-09-11 11:18:04 得分 0

注册其实很简单啊,只要运行程序的时候加上/install参数就可以了,它会自动安装注册到WIN   NT的服务列表中去。但是我不知道注册好之后是怎么一个运行机制,毕竟我是第一次接触服务程序。  
  我在服务程序列表中查看属性,显示程序路径还是我原来放程序的路径啊,但是他的工作路径应该不是原来的路径了,否则我的配置文件是放在同一个目录下的,为什么会找不到配置文件呢?是不是WINDOWS为服务程序专门指定了一个工作路径呢?  
   
  还有,你上面提供的那段程序代码我也没看懂,GetCurrentDirEx好象没有用到吗?Top

6 楼windfantasy(风之幻想)回复于 2002-09-11 19:03:52 得分 0

怎么没人来回答了?  
  算了,我已经找到解决方法了。  
  结分吧!Top

相关问题

  • 关于NT服务程序读文件的问题?
  • 程序文件格式
  • 求文件下载程序!
  • 想用wine运行一个win程序 但提示not find ./wine文件
  • 为什么在pb6.0(NT Server)中编译工程文件时出现“应用程序出错”?
  • UNIX下编译的c程序(.so文件),可以在nt环境下调用吗???
  • 怎样在NT或2000中控制客户机对文件只能读取不能拷贝,或控制某一个程序有权读取文件
  • 后缀名为vbs的文件,它在win me中默认的关联程序是什么
  • win程序打了一天的包,生成的exe文件快捷方式就是没法搞定
  • 请问大家,在WIN程序中,如何将一个DATASET存贮为XML文件啊?

关键词

  • 文件
  • 代码
  • 注册
  • 信息
  • 路径
  • 配置文件
  • 程序
  • 服务程序
  • modulefilename
  • 运行

得分解答快速导航

  • 帖主:windfantasy
  • hzb
  • hzb

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo