Base on recommendation from https://msdn.microsoft.com/en-us/library/system.io.path.getrandomfilename(v=vs.110).aspx I have replaced GetTempFileName with GetRandomFileName to get a name for the temp file. And it cause a problem. Sometimes GetRandomFileName return not a file name but location in System32 folder. And of cause users with no admin rights are having an error that file is not found. Do I missed anything?
Here is a code:
string tempFileName = Path.GetRandomFileName();
FileStream tempFileStream = null;
tempFileStream = File.Open(tempFileName, FileMode.Create, FileAccess.ReadWrite);
later on when I try to access that file by code:
FileInfo fileInfo = new FileInfo(tempFileName);
Run Code Online (Sandbox Code Playgroud)
I have an error:
System.UnauthorizedAccessException: Access to the path 'C:\Windows\system32\25ddubwt.qsc' is denied.
I realised that when user initiate a program by using menu from Windows/Start button current directory for the application will be System32
GetTempFileName()返回完整路径,GetRandomFileName()不返回。
如果您假设GetRandomFileName()有一个路径并写入该路径,则该文件很可能会在System32中以当前目录结尾。
要修复,请创建完整路径:
string fname = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2896 次 |
| 最近记录: |