簡體   English   中英

Windows:覆蓋正在使用的文件

[英]Windows: Overwrite File In Use

我正在嘗試編寫一個實用程序,該實用程序將允許在 Windows 中移動文件,並且當它找到正在使用的文件時,將設置該文件以在重新啟動時移動。

似乎 MoveFileEx ( http://msdn.microsoft.com/en-us/library/aa365240(VS.85).aspx )是正確的調用,但是我無法弄清楚我在尋找什么錯誤代碼從 GetLastError ( http://msdn.microsoft.com/en-us/library/ms679360(VS.85).aspx ) 可以看到該文件正在使用中。

當存在實際權限問題時,我希望該實用程序失敗。 有沒有辦法區分你不能在那里寫和正在使用的覆蓋錯誤?

另外,如果我在用戶的臨時文件夾中有要移動的文件,它們會在延遲重命名之前被刪除嗎?

您必須先調用CreateFile以查看文件是否正在使用中。

要查看文件是否正在使用中:

如果您獲得有效的文件句柄,那么您就知道該文件與已經打開此文件的進程沒有沖突的共享權限。

如果您指定無共享訪問權限(CreateFile 調用的 dwShareMode 參數為 0),那么如果任何其他進程當前正在以任何方式使用該文件,您將不會獲得文件句柄。 在這種情況下,GetLastError 將返回: ERROR_SHARING_VIOLATION (32)


要查看訪問文件是否存在安全問題:

要查看訪問該文件是否存在權限問題,CreateFile 調用也會失敗,但會出現不同的 GetLastError。 你會得到: ERROR_ACCESS_DENIED (5)

暫無
暫無

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

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