mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 16:36:33 +00:00
[SAMSRV]
- Create the None (aka Users) group upon setup. - Add all users as members of the Users group. - Add the Guest user as a member of the Guests alias. svn path=/trunk/; revision=59115
This commit is contained in:
parent
7a98c62a09
commit
c6a7c2e40c
5 changed files with 207 additions and 18 deletions
|
@ -4,6 +4,9 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_DOMAIN_BUILTIN_NAME "Builtin"
|
IDS_DOMAIN_BUILTIN_NAME "Builtin"
|
||||||
|
|
||||||
|
IDS_GROUP_NONE_NAME "Kein"
|
||||||
|
IDS_GROUP_NONE_COMMENT "Gewöhnliche Benutzer"
|
||||||
|
|
||||||
IDS_ALIAS_ADMINISTRATORS_NAME "Administratoren"
|
IDS_ALIAS_ADMINISTRATORS_NAME "Administratoren"
|
||||||
IDS_ALIAS_ADMINISTRATORS_COMMENT "Administratoren haben unbeschränkten Zugriff auf den Computer oder die Domäne."
|
IDS_ALIAS_ADMINISTRATORS_COMMENT "Administratoren haben unbeschränkten Zugriff auf den Computer oder die Domäne."
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,9 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_DOMAIN_BUILTIN_NAME "Builtin"
|
IDS_DOMAIN_BUILTIN_NAME "Builtin"
|
||||||
|
|
||||||
|
IDS_GROUP_NONE_NAME "None"
|
||||||
|
IDS_GROUP_NONE_COMMENT "Ordinary Users"
|
||||||
|
|
||||||
IDS_ALIAS_ADMINISTRATORS_NAME "Administrators"
|
IDS_ALIAS_ADMINISTRATORS_NAME "Administrators"
|
||||||
IDS_ALIAS_ADMINISTRATORS_COMMENT "Administrators have unrestricted access to the computer or domain."
|
IDS_ALIAS_ADMINISTRATORS_COMMENT "Administrators have unrestricted access to the computer or domain."
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,9 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_DOMAIN_BUILTIN_NAME "Wbudowane"
|
IDS_DOMAIN_BUILTIN_NAME "Wbudowane"
|
||||||
|
|
||||||
|
IDS_GROUP_NONE_NAME "None"
|
||||||
|
IDS_GROUP_NONE_COMMENT "Ordinary Users"
|
||||||
|
|
||||||
IDS_ALIAS_ADMINISTRATORS_NAME "Administratorzy"
|
IDS_ALIAS_ADMINISTRATORS_NAME "Administratorzy"
|
||||||
IDS_ALIAS_ADMINISTRATORS_COMMENT "Administratorzy mają nieograniczony dostęp w obrębie komputera lub domeny."
|
IDS_ALIAS_ADMINISTRATORS_COMMENT "Administratorzy mają nieograniczony dostęp w obrębie komputera lub domeny."
|
||||||
|
|
||||||
|
|
|
@ -10,18 +10,21 @@
|
||||||
|
|
||||||
#define IDS_DOMAIN_BUILTIN_NAME 100
|
#define IDS_DOMAIN_BUILTIN_NAME 100
|
||||||
|
|
||||||
#define IDS_ALIAS_ADMINISTRATORS_NAME 110
|
#define IDS_GROUP_NONE_NAME 110
|
||||||
#define IDS_ALIAS_ADMINISTRATORS_COMMENT 111
|
#define IDS_GROUP_NONE_COMMENT 111
|
||||||
#define IDS_ALIAS_GUESTS_NAME 112
|
|
||||||
#define IDS_ALIAS_GUESTS_COMMENT 113
|
|
||||||
#define IDS_ALIAS_POWER_USERS_NAME 114
|
|
||||||
#define IDS_ALIAS_POWER_USERS_COMMENT 115
|
|
||||||
#define IDS_ALIAS_USERS_NAME 116
|
|
||||||
#define IDS_ALIAS_USERS_COMMENT 117
|
|
||||||
|
|
||||||
#define IDS_USER_ADMINISTRATOR_NAME 120
|
#define IDS_ALIAS_ADMINISTRATORS_NAME 120
|
||||||
#define IDS_USER_ADMINISTRATOR_COMMENT 121
|
#define IDS_ALIAS_ADMINISTRATORS_COMMENT 121
|
||||||
#define IDS_USER_GUEST_NAME 122
|
#define IDS_ALIAS_GUESTS_NAME 122
|
||||||
#define IDS_USER_GUEST_COMMENT 123
|
#define IDS_ALIAS_GUESTS_COMMENT 123
|
||||||
|
#define IDS_ALIAS_POWER_USERS_NAME 124
|
||||||
|
#define IDS_ALIAS_POWER_USERS_COMMENT 125
|
||||||
|
#define IDS_ALIAS_USERS_NAME 126
|
||||||
|
#define IDS_ALIAS_USERS_COMMENT 127
|
||||||
|
|
||||||
|
#define IDS_USER_ADMINISTRATOR_NAME 140
|
||||||
|
#define IDS_USER_ADMINISTRATOR_COMMENT 141
|
||||||
|
#define IDS_USER_GUEST_NAME 142
|
||||||
|
#define IDS_USER_GUEST_COMMENT 143
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -148,16 +148,166 @@ SampSetupCreateAliasAccount(HKEY hDomainKey,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
static
|
||||||
static BOOL
|
NTSTATUS
|
||||||
SampSetupCreateGroupAccount(HKEY hDomainKey,
|
SampSetupAddMemberToGroup(IN HANDLE hDomainKey,
|
||||||
|
IN ULONG GroupId,
|
||||||
|
IN ULONG MemberId)
|
||||||
|
{
|
||||||
|
WCHAR szKeyName[256];
|
||||||
|
HANDLE hGroupKey = NULL;
|
||||||
|
PULONG MembersBuffer = NULL;
|
||||||
|
ULONG MembersCount = 0;
|
||||||
|
ULONG Length = 0;
|
||||||
|
ULONG i;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
swprintf(szKeyName, L"Groups\\%08lX", GroupId);
|
||||||
|
|
||||||
|
Status = SampRegOpenKey(hDomainKey,
|
||||||
|
szKeyName,
|
||||||
|
KEY_ALL_ACCESS,
|
||||||
|
&hGroupKey);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
return Status;
|
||||||
|
|
||||||
|
Status = SampRegQueryValue(hGroupKey,
|
||||||
|
L"Members",
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
&Length);
|
||||||
|
if (!NT_SUCCESS(Status) && Status != STATUS_OBJECT_NAME_NOT_FOUND)
|
||||||
|
goto done;
|
||||||
|
|
||||||
|
MembersBuffer = midl_user_allocate(Length + sizeof(ULONG));
|
||||||
|
if (MembersBuffer == NULL)
|
||||||
|
{
|
||||||
|
Status = STATUS_INSUFFICIENT_RESOURCES;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Status != STATUS_OBJECT_NAME_NOT_FOUND)
|
||||||
|
{
|
||||||
|
Status = SampRegQueryValue(hGroupKey,
|
||||||
|
L"Members",
|
||||||
|
NULL,
|
||||||
|
MembersBuffer,
|
||||||
|
&Length);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
goto done;
|
||||||
|
|
||||||
|
MembersCount = Length / sizeof(ULONG);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < MembersCount; i++)
|
||||||
|
{
|
||||||
|
if (MembersBuffer[i] == MemberId)
|
||||||
|
{
|
||||||
|
Status = STATUS_MEMBER_IN_GROUP;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MembersBuffer[MembersCount] = MemberId;
|
||||||
|
Length += sizeof(ULONG);
|
||||||
|
|
||||||
|
Status = SampRegSetValue(hGroupKey,
|
||||||
|
L"Members",
|
||||||
|
REG_BINARY,
|
||||||
|
MembersBuffer,
|
||||||
|
Length);
|
||||||
|
|
||||||
|
done:
|
||||||
|
if (MembersBuffer != NULL)
|
||||||
|
midl_user_free(MembersBuffer);
|
||||||
|
|
||||||
|
if (hGroupKey != NULL)
|
||||||
|
SampRegCloseKey(hGroupKey);
|
||||||
|
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static
|
||||||
|
NTSTATUS
|
||||||
|
SampSetupCreateGroupAccount(HANDLE hDomainKey,
|
||||||
LPCWSTR lpAccountName,
|
LPCWSTR lpAccountName,
|
||||||
|
LPCWSTR lpComment,
|
||||||
ULONG ulRelativeId)
|
ULONG ulRelativeId)
|
||||||
{
|
{
|
||||||
|
SAM_GROUP_FIXED_DATA FixedGroupData;
|
||||||
|
WCHAR szAccountKeyName[32];
|
||||||
|
HANDLE hAccountKey = NULL;
|
||||||
|
HANDLE hNamesKey = NULL;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
return FALSE;
|
/* Initialize fixed group data */
|
||||||
|
FixedGroupData.Version = 1;
|
||||||
|
FixedGroupData.Reserved = 0;
|
||||||
|
FixedGroupData.GroupId = ulRelativeId;
|
||||||
|
FixedGroupData.Attributes = 0;
|
||||||
|
|
||||||
|
swprintf(szAccountKeyName, L"Groups\\%08lX", ulRelativeId);
|
||||||
|
|
||||||
|
Status = SampRegCreateKey(hDomainKey,
|
||||||
|
szAccountKeyName,
|
||||||
|
KEY_ALL_ACCESS,
|
||||||
|
&hAccountKey);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
return Status;
|
||||||
|
|
||||||
|
Status = SampRegSetValue(hAccountKey,
|
||||||
|
L"F",
|
||||||
|
REG_BINARY,
|
||||||
|
(LPVOID)&FixedGroupData,
|
||||||
|
sizeof(SAM_GROUP_FIXED_DATA));
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
goto done;
|
||||||
|
|
||||||
|
Status = SampRegSetValue(hAccountKey,
|
||||||
|
L"Name",
|
||||||
|
REG_SZ,
|
||||||
|
(LPVOID)lpAccountName,
|
||||||
|
(wcslen(lpAccountName) + 1) * sizeof(WCHAR));
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
goto done;
|
||||||
|
|
||||||
|
Status = SampRegSetValue(hAccountKey,
|
||||||
|
L"AdminComment",
|
||||||
|
REG_SZ,
|
||||||
|
(LPVOID)lpComment,
|
||||||
|
(wcslen(lpComment) + 1) * sizeof(WCHAR));
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
goto done;
|
||||||
|
|
||||||
|
Status = SampRegOpenKey(hDomainKey,
|
||||||
|
L"Groups\\Names",
|
||||||
|
KEY_ALL_ACCESS,
|
||||||
|
&hNamesKey);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
goto done;
|
||||||
|
|
||||||
|
Status = SampRegSetValue(hNamesKey,
|
||||||
|
lpAccountName,
|
||||||
|
REG_DWORD,
|
||||||
|
(LPVOID)&ulRelativeId,
|
||||||
|
sizeof(ULONG));
|
||||||
|
|
||||||
|
done:
|
||||||
|
if (hNamesKey != NULL)
|
||||||
|
SampRegCloseKey(hNamesKey);
|
||||||
|
|
||||||
|
if (hAccountKey != NULL)
|
||||||
|
{
|
||||||
|
SampRegCloseKey(hAccountKey);
|
||||||
|
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
SampRegDeleteKey(hDomainKey,
|
||||||
|
szAccountKeyName);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Status;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
static BOOL
|
static BOOL
|
||||||
|
@ -684,7 +834,7 @@ SampInitializeSAM(VOID)
|
||||||
szComment,
|
szComment,
|
||||||
DOMAIN_ALIAS_RID_POWER_USERS);
|
DOMAIN_ALIAS_RID_POWER_USERS);
|
||||||
|
|
||||||
|
/* Add the Administrator user to the Administrators alias */
|
||||||
pSid = AppendRidToSid(AccountDomainInfo->DomainSid,
|
pSid = AppendRidToSid(AccountDomainInfo->DomainSid,
|
||||||
DOMAIN_USER_RID_ADMIN);
|
DOMAIN_USER_RID_ADMIN);
|
||||||
if (pSid != NULL)
|
if (pSid != NULL)
|
||||||
|
@ -696,6 +846,17 @@ SampInitializeSAM(VOID)
|
||||||
RtlFreeHeap(RtlGetProcessHeap(), 0, pSid);
|
RtlFreeHeap(RtlGetProcessHeap(), 0, pSid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Add the Guest user to the Guests alias */
|
||||||
|
pSid = AppendRidToSid(AccountDomainInfo->DomainSid,
|
||||||
|
DOMAIN_USER_RID_GUEST);
|
||||||
|
if (pSid != NULL)
|
||||||
|
{
|
||||||
|
SampSetupAddMemberToAlias(hDomainKey,
|
||||||
|
DOMAIN_ALIAS_RID_GUESTS,
|
||||||
|
pSid);
|
||||||
|
|
||||||
|
RtlFreeHeap(RtlGetProcessHeap(), 0, pSid);
|
||||||
|
}
|
||||||
|
|
||||||
RegCloseKey(hDomainKey);
|
RegCloseKey(hDomainKey);
|
||||||
}
|
}
|
||||||
|
@ -707,6 +868,14 @@ SampInitializeSAM(VOID)
|
||||||
AccountDomainInfo->DomainSid,
|
AccountDomainInfo->DomainSid,
|
||||||
&hDomainKey))
|
&hDomainKey))
|
||||||
{
|
{
|
||||||
|
SampLoadString(hInstance, IDS_GROUP_NONE_NAME, szName, 80);
|
||||||
|
SampLoadString(hInstance, IDS_GROUP_NONE_COMMENT, szComment, 256);
|
||||||
|
|
||||||
|
SampSetupCreateGroupAccount(hDomainKey,
|
||||||
|
szName,
|
||||||
|
szComment,
|
||||||
|
DOMAIN_GROUP_RID_USERS);
|
||||||
|
|
||||||
SampLoadString(hInstance, IDS_USER_ADMINISTRATOR_NAME, szName, 80);
|
SampLoadString(hInstance, IDS_USER_ADMINISTRATOR_NAME, szName, 80);
|
||||||
SampLoadString(hInstance, IDS_USER_ADMINISTRATOR_COMMENT, szComment, 256);
|
SampLoadString(hInstance, IDS_USER_ADMINISTRATOR_COMMENT, szComment, 256);
|
||||||
|
|
||||||
|
@ -716,6 +885,10 @@ SampInitializeSAM(VOID)
|
||||||
DOMAIN_USER_RID_ADMIN,
|
DOMAIN_USER_RID_ADMIN,
|
||||||
USER_DONT_EXPIRE_PASSWORD | USER_NORMAL_ACCOUNT);
|
USER_DONT_EXPIRE_PASSWORD | USER_NORMAL_ACCOUNT);
|
||||||
|
|
||||||
|
SampSetupAddMemberToGroup(hDomainKey,
|
||||||
|
DOMAIN_GROUP_RID_USERS,
|
||||||
|
DOMAIN_USER_RID_ADMIN);
|
||||||
|
|
||||||
SampLoadString(hInstance, IDS_USER_GUEST_NAME, szName, 80);
|
SampLoadString(hInstance, IDS_USER_GUEST_NAME, szName, 80);
|
||||||
SampLoadString(hInstance, IDS_USER_GUEST_COMMENT, szComment, 256);
|
SampLoadString(hInstance, IDS_USER_GUEST_COMMENT, szComment, 256);
|
||||||
|
|
||||||
|
@ -725,6 +898,10 @@ SampInitializeSAM(VOID)
|
||||||
DOMAIN_USER_RID_GUEST,
|
DOMAIN_USER_RID_GUEST,
|
||||||
USER_ACCOUNT_DISABLED | USER_DONT_EXPIRE_PASSWORD | USER_NORMAL_ACCOUNT);
|
USER_ACCOUNT_DISABLED | USER_DONT_EXPIRE_PASSWORD | USER_NORMAL_ACCOUNT);
|
||||||
|
|
||||||
|
SampSetupAddMemberToGroup(hDomainKey,
|
||||||
|
DOMAIN_GROUP_RID_USERS,
|
||||||
|
DOMAIN_USER_RID_GUEST);
|
||||||
|
|
||||||
RegCloseKey(hDomainKey);
|
RegCloseKey(hDomainKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue