SE_LMSHAREでGet/Set[Named]SecurityInfo を呼び出す場合、ACE のタイプ固有のアクセス権はどのように解釈されますか?
ファイルアクセス権定数のディレクトリバージョンを使用する必要があると思いますが、これはどこかに文書化されていますか?
SE_LMSHAREでGet/Set[Named]SecurityInfo を呼び出す場合、ACE のタイプ固有のアクセス権はどのように解釈されますか?
ファイルアクセス権定数のディレクトリバージョンを使用する必要があると思いますが、これはどこかに文書化されていますか?
私のように、Windows 共有にアクセス許可を設定しようとしていて、この古い質問に出くわした他の人の利益のために、以下をまとめました。
[Flags]
public enum ACCESS_MASK : uint
{
READ_FILE = 0x000001, // 0b000000000000000000001, 1 << 0
WRITE_FILE = 0x000002, // 0b000000000000000000010, 1 << 1
CREATE_SUBDIR = 0x000004, // 0b000000000000000000100, 1 << 2
READ_EXT_ATTR = 0x000008, // 0b000000000000000001000, 1 << 3
WRITE_EXT_ATTR = 0x000010, // 0b000000000000000010000, 1 << 4
EXECUTE = 0x000020, // 0b000000000000000100000, 1 << 5
DELETE_DIR = 0x000040, // 0b000000000000001000000, 1 << 6
READ_FILE_ATTR = 0x000080, // 0b000000000000010000000, 1 << 7
WRITE_FILE_ATTR = 0x000100, // 0b000000000000100000000, 1 << 8
DELETE = 0x010000, // 0b000010000000000000000, 1 << 16
READ_SD = 0x020000, // 0b000100000000000000000, 1 << 17
WRITE_DACL = 0x040000, // 0b001000000000000000000, 1 << 18
WRITE_OWNER = 0x080000, // 0b010000000000000000000, 1 << 19
SYNCHRONIZE = 0x100000, // 0b100000000000000000000, 1 << 20
// 2 1
// 098765432109876543210
// These combinations of the above flags correspond to the preset control levels in the relevant Windows dialogs.
SHARE_READ = READ_FILE | READ_EXT_ATTR | EXECUTE | READ_FILE_ATTR | READ_SD | SYNCHRONIZE,
SHARE_CHANGE = SHARE_READ | WRITE_FILE | CREATE_SUBDIR | WRITE_EXT_ATTR | WRITE_FILE_ATTR | DELETE,
SHARE_FULL = SHARE_CHANGE | DELETE_DIR | WRITE_DACL | WRITE_OWNER
}
これは完全なリストではないことに注意してください。これには、共有アクセス許可の 3 つの Windows プリセット (つまり、上記の最後の 3 つのメンバー) を提供するために必要なフラグの最小限のサブセットが含まれています。