基於來自https://msdn.microsoft.com/en-us/library/system.io.path.getrandomfilename(v=vs.110).aspx的推薦 我已將GetTempFileName替換爲GetRandomFileName以獲取臨時文件的名稱。它會導致一個問題。有時GetRandomFileName不會返回文件名,而是返回System32文件夾中的位置。導致沒有管理員權限的用戶遇到文件未找到的錯誤。 我錯過了什麼嗎?Path.GetRandomFileName vs Path.GetTempFileName
下面是一個代碼:
string tempFileName = Path.GetRandomFileName(); FileStream tempFileStream = null; tempFileStream = File.Open(tempFileName, FileMode.Create, FileAccess.ReadWrite)
;
後來當我試圖通過代碼來訪問該文件:
FileInfo fileInfo = new FileInfo(tempFileName);
我有一個錯誤:
System.UnauthorizedAccessException: Access to the path 'C:\Windows\system32\25ddubwt.qsc' is denied.
我意識到,當用戶通過使用菜單從Windows /開始啓動程序對於應用程序按鈕當前目錄將是System32下
位置的任何示例返回文件名來代替? –
這是一個C#小提琴,演示Alex K在說什麼。注意只打印一個隨機文件名:https://dotnetfiddle.net/dqKbUy此外,GetRandomFileName()不同時GetTempFileName創建一個零字節文件,並返回到它的完整路徑創建一個文件。 –
我必須編輯我的問題。如果您通過在Windows上使用sortcut啓動您的exe,則開始按鈕菜單的當前目錄變爲System32。 – GenZiy