【发布时间】:2017-03-31 03:50:53
【问题描述】:
基于https://msdn.microsoft.com/en-us/library/system.io.path.getrandomfilename(v=vs.110).aspx的推荐 我已将 GetTempFileName 替换为 GetRandomFileName 以获取临时文件的名称。它会导致问题。有时 GetRandomFileName 返回的不是文件名,而是 System32 文件夹中的位置。当然,没有管理员权限的用户会遇到找不到文件的错误。 我错过了什么吗?
这是一个代码:
string tempFileName = Path.GetRandomFileName();
FileStream tempFileStream = null;
tempFileStream = File.Open(tempFileName, FileMode.Create, FileAccess.ReadWrite);
稍后当我尝试通过代码访问该文件时:
FileInfo fileInfo = new FileInfo(tempFileName);
我有一个错误:
System.UnauthorizedAccessException:对路径“C:\Windows\system32\25ddubwt.qsc”的访问被拒绝。
我意识到,当用户使用 Windows/开始按钮中的菜单启动程序时,应用程序的当前目录将是 System32
【问题讨论】:
-
返回位置而不是文件名的任何示例?
-
这是一个 C# Fiddle 演示 Alex K 所说的内容。请注意,它只打印一个随机文件名:dotnetfiddle.net/dqKbUy 此外,GetRandomFileName() 不会创建文件,而 GetTempFileName 创建一个零字节文件并返回它的完整路径。
-
我必须编辑我的问题。如果您使用 Windows 开始按钮菜单上的 sortcut 启动 exe,则当前目录变为 System32。
标签: c#