的Windows/C++重置文件的安全性繼承後一個MoveFile()操作
尋找關於如何重置它被轉移到一個新的文件夾後,一個文件的安全屬性提出了一些建議。
我們創建文件的標準方式(從服務器上下載)是一個臨時文件夾中創建的文件,然後作爲文件流下來,該文件被追加。下載完成後,我們將文件移至最終目的地。
移動文件時,MoveFile()將傳輸文件上的安全性。在某些配置中,這會導致出現問題 - 最終文件夾的安全默認值與原始文件夾不匹配。我們不能搞亂文件夾的安全....
所以,最終,我想在我移動它之後對文件執行操作。我目前的想法是,我應該獲取它所進入的文件夾的安全屬性,然後在移動完成後應用到文件。
只有在您更改SACL時才需要'SE_SECURITY_NAME'。在這種情況下,我們只是改變DACL,因此不需要。但是,你需要或者合適的文件級權限,或'SE_RESTORE_NAME'。 –
@HarryJohnston,更新,謝謝。 –
可能值得注意的是,當以這種方式使用':: SetNamedSecurityInfo'時不會返回ERROR_SUCCESS。它似乎總是返回1008(0x3f0):「試圖引用不存在的令牌。」它似乎仍然工作正常。 (這是在Win 7 SP1 64進行測試。) –