加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – TPath.GetTempFileName回复“目录名无效”

发布时间:2020-12-14 02:06:21 所属栏目:Windows 来源:网络整理
导读:当从登录到域的用户运行的应用程序调用时,TPath.GetTempFileName(包装WinAPI GetTempFileName)回复“目录名无效”. 如果他们使用不使用域名的登录,则可以. 有问题的客户在另一个国家,我也不熟悉如何更改域控制器的配置以避免此问题. 我假设由于我的应用程序
当从登录到域的用户运行的应用程序调用时,TPath.GetTempFileName(包装WinAPI GetTempFileName)回复“目录名无效”.

如果他们使用不使用域名的登录,则可以.

有问题的客户在另一个国家,我也不熟悉如何更改域控制器的配置以避免此问题.

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

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

我指示他们确保他们可以完全控制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.GetTempPath,然后再调用TPath.GetTempFileName来检查它是否存在.或者,您可以在出现故障时调用它,作为处理引发的异常的一部分并添加错误消息的路径.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读