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);
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()
returns a full path, GetRandomFileName()
does not.
If you assume GetRandomFileName()
has a path and write to it the file may well end up in System32 if thats the current directory.
To fix create a full path:
string fname = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With