gpt4 book ai didi

windows - TPath.GetTempFileName 回复 "The directory name is invalid"

转载 作者:可可西里 更新时间:2023-11-01 13:53:16 25 4
gpt4 key购买 nike

TPath.GetTempFileName(包含 WinAPI GetTempFileName)在从登录到域的用户运行的应用程序调用时回复“目录名称无效” .

如果他们使用未使用域的登录名,则可以。

遇到问题的客户在另一个国家,我也不熟悉如何更改域 Controller 的配置来避免这个问题。

我假设由于我的应用程序无法正常工作,所以我应该以不同的方式获取临时文件名。

“以管理员身份运行”没有帮助。

我已指示他们确保他们可以完全控制 TEMP 和 TMP 系统环境变量中提到的文件夹,显然他们可以控制,但仍然会出现相同的错误。

我的应用程序是 Win32 Delphi 桌面应用程序,但由于 Windows 是错误的来源,我认为此信息的用处有限。

Windows 10 是操作系统。

最佳答案

TPath.GetTempFileName 在最开始调用 TPath.GetTempPath 但在使用返回的调用 Winapi.Windows.GetTempFileName 之前不检查它路径。

很可能调用 TPath.GetTempPath 返回空路径或无效路径。

MSDN说:

The GetTempPath function checks for the existence of environment variables in the following order and uses the first path found:

  1. The path specified by the TMP environment variable.
  2. The path specified by the TEMP environment variable.
  3. The path specified by the USERPROFILE environment variable.
  4. The Windows directory.

如果它返回 Windows 目录,则调用不会因上述消息而失败。因此,这三个环境变量之一可能存在错误路径。

您的客户应该检查这些变量并验证它们是否存在。你说,路径“显然”没问题。

经验告诉我怀疑客户所说的他们检查过的内容......您可以在调用 TPath.GetTempFileName 之前自行调用 TPath.GetTempPath 来检查是否它存在。或者,您可以在失败的情况下调用它作为处理引发的异常的一部分,并将路径添加到错误消息中。

关于windows - TPath.GetTempFileName 回复 "The directory name is invalid",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39127373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com