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
|
||
|
|
||
|
|