2010-08-19 52 views
12

關閉打開的文件中我發現了一個類似的問題here但它被關閉/以「不這樣做」的答案接受。迫使由C#

我在我不在乎會發生什麼情況的其他應用程序的情況是,我要採取可能被其他人(如果需要的話毫不客氣地)被鎖定的文件,並有我與它的方式。我可能需要移動,重命名或刪除此文件。

基本上我需要在由一個應用程序,並沒有清理它的鎖創建一個目錄來處理文件。我知道應用程序在我的電話時已完成處理,但我需要在運行時關閉鎖。另外,似乎我與從本地AV軟件讀取服務器所在的遠程共享的掃描衝突。

這一切都增加了一個不可避免的「強制關閉」的情況,所以我可以做什麼,我需要。有人有什麼想法做什麼?

回答

2

這可能是無關緊要的,如果它是請別人評論,但是我之前在資源管理器中使用過一種解決方法來解決文件鎖定問題。
如果一個文件是由已經去世的Windows往往不會讓你刪除它,但如果你創建的同名別處的一個新的文件,將其轉移到它會成功的文件夾中的進程鎖定。然後你可以刪除新文件,一切都很好。
要將它用於您的應用程序,您必須能夠讀取該文件並將其保存在內存中,然後在刪除舊文件之後將其寫回。
也許這將幫助,也許不是,但它是值得一試。

0
foreach (var process in Process.GetProcessesByName("excel")) //whatever you need to close 
    { 
     if (process.MainWindowTitle.Contains("test.xlsx")) 
     { 
      process.Kill(); 
      break; 
     } 
    } 

foreach (var process in Process.GetProcesses()) 
    { 
     if (process.MainWindowTitle.Contains("test.dat")) 
     { 
      process.Kill(); 
      break; 
     } 
    }