我的要求如下:我們如何在SHCreateDirectoryEx()中使用SECURITY_ATTRIBUTES?
- 在指定位置創建一個目錄。
- 設置其屬性,使文件夾爲「READ ONLY」。換句話說,用戶帳戶不應該能夠在該文件夾內創建文件夾/文件。
現在,我可以創建目錄如下:
SHCreateDirectoryEx(NULL, <path>.c_str(), NULL);
我現在想設置相應的安全屬性。任何幫助/代碼示例將不勝感激。
平臺:Win7的(郎鹹平:C++/C)
我的要求如下:我們如何在SHCreateDirectoryEx()中使用SECURITY_ATTRIBUTES?
現在,我可以創建目錄如下:
SHCreateDirectoryEx(NULL, <path>.c_str(), NULL);
我現在想設置相應的安全屬性。任何幫助/代碼示例將不勝感激。
平臺:Win7的(郎鹹平:C++/C)
你要做的第一件事就是創建一個SECURITY_ATTRIBUTES
結構,並設置它的成員。
SECURITY_ATTRIBUTES SecAttr;
SecAttr.size = sizeof(SECURITY_ATTRIBUTES); //Set size of structure
下一個成員是一個類型的SECURITY_DESCRIPTOR
這實際上包含了管理此對象的安全訪問所需的所有數據。
您不能直接創建這種結構,按照MSDN documentation,但你會使用文檔創建這樣一個結構中提供的功能,設置它的所有所需必要的標誌,然後獲得一個指向它傳遞給SecAttr
。
有關如何創建這樣一個SECURITY_DESCRIPTOR
結構的示例可以找到here。在這個例子中,它是爲註冊表鍵完成的,但原理是相同的。
基本上你在DACL(Discretionary Security Access Control List)或SACL正在填充(System Access Control List有什麼權限(右鍵屬性讀/寫/只讀)等,你要的對象有。
具有填充在整個SECURITY_ATTRIBUTES
結構中,你可以將它傳遞給函數。
SHCreateDirectoryEx是無關緊要的,你的問題完全是關於'SECURITY_ATTRIBUTES'。 – 2013-03-07 14:31:15