2012-01-31 23 views
0

我想將與一個標記文件關聯的所有加密證書複製到一組其他文件中。NTFS EFS:如何將加密證書從一個文件複製到(一個)其他文件中?

當然,還有的QueryUsersOnEncryptedFile函數返回一個PENCRYPTION_CERTIFICATE_HASH_LIST,而且也將AddUsersToEncryptedFile功能,即需要一個PENCRYPTION_CERTIFICATE_LIST

所以,據我所知,要複製證書,這些散列需要轉換回證書列表。

爲了做到這一點,我一直在與CertFindCertificateInStore搞混。這一直工作到一定程度上,但不是所有的證書,我甚至不知道哪個證書存儲區(S)我要查詢......我試過幾個:CAROOTMYSPCTrustTrustedPeopleAuthRoot (甚至AddressBook,它似乎包含過期的證書緩存,因爲有些已經過期)但他們都沒有給我訪問我有散列的所有證書。

那麼,如何可靠地將證書散列映射回證書本身? (一些示例代碼會很好。)

在此先感謝!


作爲一個側面說明:

我也想從這些相同的目標文件中刪除所有其他證書。爲此,有一個可用的功能,稱爲RemoveUsersFromEncryptedFile,也需要一個PENCRYPTION_CERTIFICATE_HASH_LIST

我想這個列表可以通過首先在每個文件上調用QueryUsersOnEncryptedFile來收集,並將生成的證書哈希列表傳遞給RemoveUsersFromEncryptedFile(在同一個文件中)。

但有一點需要注意:我不想丟失所有證書,否則任何人都無法訪問這些文件! 我可以安全地從這個中間散列列表中清除我自己的(以及其他任何允許的)證書散列嗎?(鑑於還有專用的FreeEncryptionCertificateHashList功能。)

回答

1

我自己找到答案:有一個名爲DuplicateEncryptionInfoFile的API,它正是我所需要的。我應該進一步搜索...

感謝閱讀,但我希望這個問題+答案將有助於某人,某天;-)

相關問題