2014-03-25 25 views
0

我有以下問題,是的,我瀏覽了大約1小時的網絡,發現什麼都不能解決我的問題。Explorer.exe鎖創建文件 - >訪問被拒絕的目錄。移動

我有一個文件夾中有大約100個文件,稱爲「媒體」。在我的Delphi Setup.exe中(也不能在C#中工作),我允許用戶通過將其重命名爲任何他想要的,例如「media_v1」來備份這個「media」文件夾。它工作得很好。

如果我在這個「媒體」文件夾中創建一個新文件,它也可以是一個空的txt,重命名過程不再工作。出現錯誤「5訪問被拒絕」。

現在,我在網上找了一些幫助,發現它可以通過其他進程鎖定,等等。事實:

甚至進程資源管理器不會顯示任何句柄或dll鎖定任何文件,但如果我殺了之前的資源管理器任務,它再次工作得很好。

private void button1_Click(object sender, EventArgs e) 
    { 

     Directory.Move(@"D:media\folder", @"D:\media\folder_v1"); 
    } 

有什麼建議嗎?

非常感謝!

+0

請更新。 1.是否僅對該新文件發生「訪問被拒絕」錯誤(可能是)? 2.該文件是如何創建的? –

+0

請提供SSCCE。 –

+0

這聽起來像你的代碼有錯誤。如果我們能看到你的代碼,我們可能會幫忙。請[編輯]你的問題,告訴我們你在做什麼。 –

回答

1

這是一個SSCCE,它演示你的方法是完美的功能。這個例子有效,你的代碼並不意味着你的代碼比你向我們展示的更多。你正在做的其他事情正在導致這個問題。向我們展示您程序中的相關代碼是必要的。更好的是,自己做一個SSCCE來證明問題。

class Program 
{ 
    static void Main(string[] args) 
    { 
     Console.WriteLine("Original Directory Contents : "); 
     string[] fileEntries = Directory.GetFiles(@"C:\Test\stuff"); 
     foreach (string fileName in fileEntries) 
      Console.WriteLine(fileName); 

     Console.WriteLine("Moving Directory... "); 
     Directory.Move(@"C:\Test\stuff", @"C:\Test\stuff2"); 

     Console.WriteLine("Creating New File... "); 
     File.WriteAllText(@"C:\Test\stuff2\new.txt", "test"); 

     Console.WriteLine("New Directory Contents : "); 
     fileEntries = Directory.GetFiles(@"C:\Test\stuff2"); 
     foreach (string fileName in fileEntries) 
      Console.WriteLine(fileName); 

     Console.WriteLine("Moving Directory... "); 
     Directory.Move(@"C:\Test\stuff2", @"C:\Test\stuff"); 
     fileEntries = Directory.GetFiles(@"C:\Test\stuff"); 
     foreach (string fileName in fileEntries) 
      Console.WriteLine(fileName); 
    } 
} 

輸出:

enter image description here

通過更換重複測試:

Console.WriteLine("Creating New File... "); 
    File.WriteAllText(@"C:\Test\stuff2\new.txt", "test"); 

Console.ReadLine(); 

和手動創建一個新的文本連接在資源管理器中,然後繼續該程序也沒有問題。

+0

好的提示。但我發佈的代碼是所有的代碼。我爲此創建了一個演示項目。只有這條線。 有趣的事實:只要沒有子目錄,它就會工作。當我創建一個子目錄或(如果它的一個現有文件夾)一個現有子目錄中的文件,那麼我就不再工作了。 –

+0

@Michel不幸的是,我仍然無法重現您的問題。你的描述不是很清楚。這需要清楚地描述重現問題所需的確切步驟。 –

+0

因爲這個問題很難描述^^ ...爲了重現我的一面:創建一個子文件夾,在那裏創建一個文件,然後頂部文件夾的移動方法不再工作,錯誤「訪問被拒絕」出現。 –

0

我可以確認Michel在Windows XP SP3上描述的最新補丁級別05/2014的問題。我有許多不同的個人電腦都患有這個確切的問題。

它必須是Windows內的一個bug,因爲殺死並重新啓動「explorer.exe」可以幫助每一次。

相信我,你的代碼沒有問題。

也許explorer.exe患有某種手柄泄漏。

我殺死,我的腳本中的explorer.exe重啓解決這個錯誤(難看,但還不知道什麼更好的辦法)

也許你可以嘗試解鎖工具,可以釋放句柄。 當您遇到問題時,您使用了哪個操作系統?

相關問題