2009-09-11 39 views
0

我使用DotNetZip庫壓縮文件夾中的文件。要識別其他進程當前打開的文件,我使用SysInternals.com中的'handle.exe'。我通過調用參數並根據這些行解析輸出來做到這一點。識別進程句柄並鎖定託管代碼中的文件

using (Process handleProcess = new Process()) 
{ 
    // -- Set up the parameters and call the process. 
    handleProcess.StartInfo.FileName = "handle.exe"; 
    handleProcess.StartInfo.UseShellExecute = false; 
    handleProcess.StartInfo.RedirectStandardOutput = true; 
    handleProcess.StartInfo.Arguments = "-u " + fileName; 
    handleProcess.Start(); 
... 

哪個工作,但有一個kludge關於它的空氣。任何人都可以在託管代碼中提出更好的方法?

回答

1

下面的代碼顯示你被其他進程打開的文件:

SelectQuery query = new SelectQuery("select name from cim_datafile"); 
using (ManagementObjectSearcher searcher = new 
ManagementObjectSearcher(query)) 
{ 
    foreach (ManagementObject mo in searcher.Get()) 
    { 
     Console.WriteLine("File Name: {0} \nIs currently opened", mo.Properties["Name"].Value); 
    } 
} 

這是this略加修改。

相關問題