00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00031
00032 #pragma once
00033
00034 #include "../api_core.h"
00035 #include "../System/databuffer.h"
00036
00040 class CL_API_CORE CL_SecurityIdentifier
00041 {
00044
00045 public:
00047 enum Type
00048 {
00049 type_user,
00050 type_group,
00051 type_domain,
00052 type_alias,
00053 type_well_known_group,
00054 type_deleted_account,
00055 type_invalid,
00056 type_unknown,
00057 type_computer
00058 };
00059
00063 CL_SecurityIdentifier(const CL_String &name);
00064
00069 CL_SecurityIdentifier(const CL_String &name, Type type);
00070
00071 #ifdef WIN32
00072
00076 CL_SecurityIdentifier(const PSID sid);
00077 #else
00078
00083 CL_SecurityIdentifier(unsigned int sid, Type type);
00084 #endif
00085
00089 CL_SecurityIdentifier(const CL_SecurityIdentifier ©);
00090
00091 ~CL_SecurityIdentifier();
00092
00096 static CL_SecurityIdentifier get_thread_user();
00097
00101 static CL_SecurityIdentifier get_thread_group();
00102
00106
00107 public:
00109 CL_String get_name() const;
00110
00112 CL_String get_domain_name() const;
00113
00115 Type get_type() const;
00116
00120
00121 public:
00122 CL_SecurityIdentifier &operator =(const CL_SecurityIdentifier ©);
00123
00127
00128 private:
00129 #ifdef WIN32
00130 CL_DataBuffer sid;
00131 #else
00132 unsigned int sid;
00133 #endif
00134
00135 Type type;
00137 };
00138