gpt4 book ai didi

.net - 你能假设总是有一个 Windows 临时文件夹吗?

转载 作者:行者123 更新时间:2023-12-03 11:12:22 26 4
gpt4 key购买 nike

问题How to get temporary folder for current user很好地描述了如何查找要用于当前用户的临时文件夹。

Path.GetTempPath 的文档中它只指出了一种可能由于安全权限而出现的异常(exception)情况。

如果找不到临时文件夹,则不会提及故障模式。

无临时文件夹的情况是否现实?或者丢失的临时文件夹是否表明 Windows 更普遍被丢弃?

我想这个问题归结为:如果没有,需要临时文件夹尝试的应用程序是否需要检测/恢复/优雅地处理?或者,在正常运行的 Windows PC 上应该合理发生的事情之外,您可以盲目地依赖它吗?

(就我个人而言,我从来没有遇到过没有工作临时位置的 PC,但我们偶尔会收到来自最终用户的报告,似乎情况确实如此。但是,我可以想象该信息中会有一些噪音)。

最佳答案

我们在特定的 Windows Server 系统上有一个缺少临时文件夹的错误 - 必须有一些配置错误或类似的错误。此外,用户有权手动创建文件夹,因此我们只是在启动过程中添加了“如果缺少则创建临时文件夹”的保护措施。
但是,是的,这肯定是非常出乎意料的行为,我只在 1000 多个系统中的一个中看到过它。

System.ComponentModel.Win32Exception (0x80004005): The system cannot find the path specified
at Microsoft.Win32.NativeMethods.CreateDirectory(String path, SafeLocalMemHandle acl)
at System.CodeDom.Compiler.TempFileCollection.CreateTempDirectoryWithAce(String directory, String identity)
at System.CodeDom.Compiler.TempFileCollection.GetTempFileName(String tempDir)
at System.CodeDom.Compiler.TempFileCollection.EnsureTempNameCreated()
at System.CodeDom.Compiler.TempFileCollection.AddExtension(String fileExtension, Boolean keepFile)
at System.CodeDom.Compiler.TempFileCollection.AddExtension(String fileExtension)
at Microsoft.CSharp.CSharpCodeGenerator.FromSourceBatch(CompilerParameters options, String[] sources)
尚未尝试此操作,但在 C# 中似乎开销很小并且省去了零星的麻烦:
    private void GenerateTempPathIfNeeded()
{
var path = Path.GetTempPath();
try
{
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
}
catch (Exception ex)
{
MessageBox.Show($"something");
}
}

关于.net - 你能假设总是有一个 Windows 临时文件夹吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57675121/

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