【问题标题】:Relative path of a given file from a service application in DelphiDelphi中服务应用程序中给定文件的相对路径
【发布时间】:2010-12-17 21:56:52
【问题描述】:

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

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

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

【问题讨论】:

  • 我有一个见解,这里的人不会喜欢用西班牙语提出的问题。
  • 在英格莱斯,赞成。说真的,英语可能有助于回答你的问题:) ps:我认为你是从错误的目录启动它。尝试指定完整路径,如 \Programming\Delphi\...

标签: delphi path windows-services relative-path


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 好的,我刚刚找到目录:C:\Windows\system32\。非常感谢。
    【解决方案3】:

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

    您也可以尝试根据自己的喜好设置 currentdir。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-24
      • 2013-10-25
      • 1970-01-01
      • 2013-12-20
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      相关资源
      最近更新 更多