90 lines
1.4 KiB
C
90 lines
1.4 KiB
C
|
|
/*
|
|
* List of accounts we allow file access for
|
|
*/
|
|
#define MAX_ACCOUNT_NAME 32
|
|
#define CURRENT_USER L"%user%"
|
|
|
|
// These are the accounts we want to have access to the directory
|
|
#define ADMIN_ACCOUNT 0
|
|
#define SYSTEM_ACCOUNT 1
|
|
#define USER_ACCOUNT 2
|
|
|
|
typedef struct _ADMIN_ACCOUNTS {
|
|
WCHAR Name[MAX_ACCOUNT_NAME];
|
|
PSID pSid;
|
|
} ADMIN_ACCOUNTS, *PADMIN_ACCOUNTS;
|
|
|
|
/*
|
|
* Operation result codes to allow a separate reporting module
|
|
*/
|
|
typedef enum _FILE_RESULT {
|
|
FileOk, // File can not be written by users
|
|
FileAccessError, // Error occured, disposition unknown
|
|
FileAccessErrorUserFormat // Error, user formatted message
|
|
} FILE_RESULT;
|
|
|
|
BOOL
|
|
InitSecurity(
|
|
);
|
|
|
|
BOOL
|
|
IsAllowSid(
|
|
PSID pSid
|
|
);
|
|
|
|
BOOL
|
|
xxxLookupAccountName(
|
|
PWCHAR pSystemName,
|
|
PWCHAR pAccountName,
|
|
PSID *ppSid
|
|
);
|
|
|
|
BOOLEAN
|
|
SetFileTree(
|
|
PWCHAR pRoot,
|
|
PWCHAR pAvoidDir
|
|
);
|
|
|
|
BOOL
|
|
ReportFileResult(
|
|
FILE_RESULT Code,
|
|
ACCESS_MASK Access,
|
|
PWCHAR pFile,
|
|
PWCHAR pAccountName,
|
|
PWCHAR pDomainName,
|
|
PCHAR UserFormat,
|
|
...
|
|
);
|
|
|
|
PACL
|
|
GetSecureAcl();
|
|
|
|
PSID
|
|
GetLocalAdminSid();
|
|
|
|
PSID
|
|
GetAdminSid();
|
|
|
|
PSID
|
|
GetLocalAdminGroupSid();
|
|
|
|
BOOL
|
|
CheckUserSid();
|
|
|
|
#if DBG
|
|
void
|
|
DumpSecurityDescriptor(
|
|
PSECURITY_DESCRIPTOR pSD
|
|
);
|
|
|
|
void
|
|
DumpAcl(
|
|
PACL pAcl,
|
|
PCHAR pBase,
|
|
PULONG pSize
|
|
);
|
|
#endif
|
|
|
|
|