Delphi中来自服务应用程序的给定文件的相对路径

时间:2009-11-18 14:59:28

标签: delphi windows-services path relative

我在加载文件时遇到问题,因为我正在传递函数FileExists(Filename: String)的相对路径,并且它返回false,也就是说,它在我传递的目录中找不到该文件。

我在Template.html目录中有一个名为D:\Programming\Delphi\Projects\SendMail的文件,以及一个用.EXE位于D:\Programming\Delphi\Automation目录中的Delphi编写的服务。我将相对路径.\..\Projects\SendMail\Template.html传递给FileExists(),但它返回该文件不存在。

我认为这与服务的相对路径和应用程序的相对路径不同有关。有人可以帮我吗?

3 个答案:

答案 0 :(得分:8)

正如lorenzog所说,请尝试指定完整路径。

您也可以尝试将currentdir设置为您的喜好。

//sets currentdir to your application.exe dir
SetCurrentDir(ExtractFileDir(ParamStr(0))); 

答案 1 :(得分:3)

您假设服务的当前目录是存储可执行文件的目录。调用GetCurrentDir以查找当前目录。

答案 2 :(得分:3)

我的经验是,无论实际可执行文件位于何处,服务都以%SystemRoot%\System32的工作文件夹开头。

我解决这个限制的方法是在安装服务期间编写一个注册表项(例如HKLM\SOFTWARE\MyCompany\MyApp\INSTALL_PATH),指向我将喜欢的工作文件夹 。然后,当服务启动时,它会从注册表中获取数据,并在创建文件路径时使用该值作为基础。