Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

80 lines
2.3 KiB

// Copyright (c) 1997-1999 Microsoft Corporation
#ifndef __PRINCIPAL_H
#define __PRINCIPAL_H
// "generic" definition combining the perms from old and new security strategies.
#define ACL_ENABLE 0x1 //NS_MethodStyle
#define ACL_METHOD_EXECUTE 0x2 //NS_MethodStyle
#define ACL_FULL_WRITE 0x4 //NS_MethodStyle
#define ACL_PARTIAL_WRITE 0x8 //NS_MethodStyle
#define ACL_PROVIDER_WRITE 0x10 //NS_MethodStyle
#define ACL_REMOTE_ENABLE 0x20 //NS_MethodStyle
#define ACL_READ_CONTROL 0x20000 //NS_MethodStyle
#define ACL_WRITE_DAC 0x40000 //NS_MethodStyle & RootSecStyle:Edit Security
#define ACL_INSTANCE_WRITE 0x40 //RootSecStyle
#define ACL_CLASS_WRITE 0x80 //RootSecStyle
#define ACL_MAX_BIT ACL_WRITE_DAC
#define VALID_NSMETHOD_STYLE (ACL_ENABLE | ACL_METHOD_EXECUTE | ACL_FULL_WRITE | \
ACL_PARTIAL_WRITE | ACL_PROVIDER_WRITE | ACL_READ_CONTROL | \
ACL_WRITE_DAC)
#define VALID_ROOTSEC_STYLE (ACL_INSTANCE_WRITE |\
ACL_CLASS_WRITE | ACL_WRITE_DAC)
#define ALLOW_COL 1
#define DENY_COL 2
#include "DataSrc.h"
//------------------------------------------------------------------------
class CPrincipal
{
public:
typedef enum {
RootSecStyle, // pre-M3
NS_MethodStyle // M3+
} SecurityStyle;
// for initializing.
CPrincipal(CWbemClassObject &userInst, SecurityStyle secStyle);
// move m_perms into the checkboxes
void LoadChecklist(HWND list, int OSType);
// move the checkboxes into m_perms.
void SaveChecklist(HWND list, int OSType);
HRESULT Put(CWbemServices &service, CWbemClassObject &userInst);
bool Changed(void)
{
return (m_origPerms != m_perms);
};
int GetImageIndex(void);
void AddAce(CWbemClassObject &princ);
HRESULT DeleteSelf(CWbemServices &service); // M1 targets only.
TCHAR m_name[100];
TCHAR m_domain[100];
SecurityStyle m_secStyle;
UINT m_SidType;
bool m_editable;
// perms mask for this principal (aka account)
DWORD m_perms, m_origPerms, m_inheritedPerms;
};
//------------------------------------------------------------------------
// An instance is attached to each item in the permissions list so they
// can be matched up reliably.
typedef struct
{
// Identifies the "generic" perm bit. Only set ONE bit.
DWORD m_permBit;
} CPermission;
#endif __PRINCIPAL_H