簡體   English   中英

訪問被拒絕嘗試在Windows用戶臨時文件夾上提取檔案

[英]access denied trying extracting an archive on the windows user temp folder

我正在嘗試在Windows用戶臨時目錄(C:\\ Documents and Settings \\ User \\ Local Settings \\ Temp)上的臨時文件夾中的文件上運行命令行過程(提取.7z存檔) ),在我的c#應用中使用Process。

我認為由於“訪問被拒絕”而發生的進程返回錯誤是因為當我挖掘.NET的prcoess對象時可以看到帶有錯誤代碼5的win32Exception。

在其他地方做同樣的事情之前效果很好,所以我想也許這是我不應該做的事情? (運行一個進程以使用%TEMP%上的文件)也許我需要以某種方式通過安全性?

假定您使用的是常規.NET(不是CF / Silverlight等),則完全希望在用戶的臨時區域中訪問文件。 我想知道問題是否還在於您在創建文件后不小心使文件保持打開狀態,也許不使用“使用”或類似名稱?

在炮轟到一個單獨的進程時,我可能不建議使用環境變量(%TEMP%等)。 理想情況下,您應該將完整路徑傳遞給文件(減少出錯的地方...),並確保引用任何路徑參數(在空格的情況下)-即您的參數為@“ ...”“ c: \\ some path \\ whatever \\ tmp“” ...“(如果您明白我的意思)。

最后,如果要提取文件,則需要考慮現有內容。 Path.GetTempFileName()對於創建單個文件占位符是很好的,但是對於提取歸檔文件,您可能要創建目錄-guid對於此目的很方便(避免沖突,請記住以后將其刪除):

string dir = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());

使用命令行(cmd)運行相同的進程有助於弄清楚我的問題是我使用long-path-name指定了該進程的路徑參數。

解決方案可以在這里找到:

.net中轉換為短路徑的標准方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM