【发布时间】:2016-08-24 15:25:40
【问题描述】:
TPath.GetTempFileName(封装了 WinAPI GetTempFileName)在从登录到域的用户运行的应用程序调用时回复“目录名称无效”。
如果他们使用不使用域的登录名,它可以工作。
遇到问题的客户在另一个国家/地区,我也不熟悉如何更改域控制器的配置以避免此问题。
我假设由于我的应用程序不能正常工作,我应该以不同的方式获取临时文件名。
“以管理员身份运行”没有帮助。
我已指示他们确保他们可以完全控制 TEMP 和 TMP 系统环境变量中提到的文件夹,显然他们可以控制,但仍然会出现相同的错误。
我的应用程序是一个 Win32 Delphi 桌面应用程序,但由于 Windows 是错误的来源,我认为这些信息的用处有限。
Windows 10 是操作系统。
【问题讨论】:
-
另外,
GetTempFileName replies "The directory name is invalid"是什么意思?这是调用此函数后从 Windows 返回的错误消息吗? -
TPath.GetTempFileName 失败,我不明白为什么。将为问题添加一些额外的信息。他们在世界的另一端,我无法在这里制造类似的情况。寻求某种建议我做错了什么或没有考虑到什么似乎更聪明。已经使用 TPath.GetTempFileName 好几年了,没有任何困难。
-
TPath.GetTempFileName 引发异常“目录名称无效”。我试图概括这个问题,因为很明显 Windows 的 GetTempFileName() 是返回错误并导致异常的那个。
-
你的程序是正确的,你不应该改变它。您的用户需要修复损坏的系统。
-
其实在我看来是有错误的。如果 API 调用失败,GetTempPath 应该引发操作系统错误。相反,它返回空字符串。这就是这里发生的事情。但是 GetTempPath 应该会失败。