2010-10-06 56 views
2

作爲測試實用程序的一部分,我創建了一些註冊表項並將特定的安全描述符應用於它們。稍後,我想將其重置爲「默認」安全描述符(即從父代繼承)。什麼是正確的方法來做到這一點?如何將對象的安全描述符重置爲默認值?

我無法保存和恢復原始安全描述符,因爲此測試程序可能需要多次運行此實用程序才能重置它。我想我可以將它保存到臨時文件或註冊表值,但我更喜歡更優雅的解決方案。

所以,我必須做一些與父母的安全描述符或什麼?我很難搞清楚該做什麼。

幾乎忘了提,我在C.這樣

更新:我應該補充說,我還可以用文件(可能還有其他安全對象)這樣做,所以這將是如果有一種通用的方式來處理安全描述符本身,而不是使用像RegSaveKey這樣的特定於對象的東西,那就很好。我想這將需要與父母的安全描述符的工作,所以這將是巨大的,如果我可以做類似如下:

BOOL WINAPI GetDefaultChildSecurityDescriptorFromParent(LPSECURITY_DESCRIPTOR Parent, LPSECURITY_DESCRIPTOR* Child); 

我只是不知道如何做到這一點編程。你可以在安全描述符編輯器中通過使用複選框來繼承父項的條目來實現這一點,所以顯然可以以某種方式進行。

回答

0

我討厭回答我自己的問題,但我在這件事上發現了一個documentation的片段(DACL真的是我唯一關心的問題)。看起來我必須獲得父代的DACL並創建一個新的DACL,其中包含所有可繼承的ACE。我希望這會比這更簡單,但它不是太糟糕。

0

我能想到的最簡單的方法是讀入需要默認的結構......然後刪除它並重新創建它 - 傳遞NULL來強制默認值。

相關問題