从服务应用程序中调用TPath.GetDocumentsPath

时间:2016-10-03 07:26:08

标签: windows delphi windows-services

我想在WIndows上运行我的服务时访问MyDocuments文件夹中的一些文件。 文档说,如果Windows GetDocumentsPath返回:

  • C:\Documents and Settings\<username>\My Documents(XP)
  • C:\Documents and Settings\<username>\My Documents(Vista或更高版本)

在我的情况下,我得到C:\WINDOWS\system32\config\systemprofile\Documents。它是Windows中Documents文件目录的某种链接吗?顺便说一句,我在Documents路径中看不到C:\WINDOWS\system32\config\systemprofile文件夹。

有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:2)

“文档”文件夹是每个用户文件夹。 TPath.GetDocumentsPath()返回与调用线程关联的用户帐户的Documents文件夹。但是,如果您的服务是在SYSTEM帐户下运行,而不是特定用户帐户,则无法使用TPath获取任何特定于用户的文件夹的路径。

要使服务检索用户的“文档”文件夹(或任何其他特定于用户的文件夹),该服务必须:

  1. 作为所需用户开始运行,而不是SYSTEM帐户。

  2. 如果作为SYSTEM帐户运行,请获取所需用户帐户的令牌,然后将该令牌传递给SHGetFolderPath()SHGetKnownFolderPath()