根据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 / Start按钮启动程序时,应用程序的当前目录将是System32
答案 0 :(得分:4)
GetTempFileName()
返回完整路径,GetRandomFileName()
没有。
如果您认为GetRandomFileName()
有一个路径并写入该路径,那么该文件可能最终会出现在System32中(如果是当前目录)。
要修复创建完整路径:
string fname = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());