LPCWSTR lpAccountName,
ULONG ulRelativeId)
{
+ SAM_USER_FIXED_DATA FixedUserData;
DWORD dwDisposition;
WCHAR szAccountKeyName[32];
HKEY hAccountKey = NULL;
HKEY hNamesKey = NULL;
+ /* Initialize fixed user data */
+ memset(&FixedUserData, 0, sizeof(SAM_USER_FIXED_DATA));
+ FixedUserData.Version = 1;
+
+ FixedUserData.UserId = ulRelativeId;
+
swprintf(szAccountKeyName, L"Users\\%08lX", ulRelativeId);
if (!RegCreateKeyExW(hDomainKey,
&hAccountKey,
&dwDisposition))
{
+ RegSetValueEx(hAccountKey,
+ L"F",
+ 0,
+ REG_BINARY,
+ (LPVOID)&FixedUserData,
+ sizeof(SAM_USER_FIXED_DATA));
+
RegSetValueEx(hAccountKey,
L"Name",
0,
IN PSID lpDomainSid,
OUT PHKEY lpDomainKey)
{
+ SAM_DOMAIN_FIXED_DATA FixedData;
+ LPWSTR lpEmptyString = L"";
DWORD dwDisposition;
HKEY hDomainKey = NULL;
HKEY hAliasesKey = NULL;
if (lpDomainKey != NULL)
*lpDomainKey = NULL;
+ /* Initialize the fixed domain data */
+ memset(&FixedData, 0, sizeof(SAM_DOMAIN_FIXED_DATA));
+ FixedData.Version = 1;
+ NtQuerySystemTime(&FixedData.CreationTime);
+ FixedData.DomainModifiedCount.QuadPart = 0;
+// FixedData.MaxPasswordAge // 6 Weeks
+ FixedData.MinPasswordAge.QuadPart = 0; // Now
+// FixedData.ForceLogoff
+// FixedData.LockoutDuration // 30 minutes
+// FixedData.LockoutObservationWindow // 30 minutes
+ FixedData.ModifiedCountAtLastPromotion.QuadPart = 0;
+ FixedData.NextRid = 1000;
+ FixedData.PasswordProperties = 0;
+ FixedData.MinPasswordLength = 0;
+ FixedData.PasswordHistoryLength = 0;
+ FixedData.LockoutThreshold = 0;
+ FixedData.DomainServerState = DomainServerEnabled;
+ FixedData.DomainServerRole = DomainServerRolePrimary;
+ FixedData.UasCompatibilityRequired = TRUE;
+
if (RegCreateKeyExW(hDomainsKey,
lpKeyName,
0,
&dwDisposition))
return FALSE;
+ /* Set the fixed data value */
+ if (RegSetValueEx(hDomainKey,
+ L"F",
+ 0,
+ REG_BINARY,
+ (LPVOID)&FixedData,
+ sizeof(SAM_DOMAIN_FIXED_DATA)))
+ return FALSE;
+
if (lpDomainSid != NULL)
{
RegSetValueEx(hDomainKey,
RtlLengthSid(lpDomainSid));
}
+ RegSetValueEx(hDomainKey,
+ L"OemInformation",
+ 0,
+ REG_SZ,
+ (LPVOID)lpEmptyString,
+ sizeof(WCHAR));
+
+ RegSetValueEx(hDomainKey,
+ L"ReplicaSourceNodeName",
+ 0,
+ REG_SZ,
+ (LPVOID)lpEmptyString,
+ sizeof(WCHAR));
+
/* Create the Alias container */
if (!RegCreateKeyExW(hDomainKey,
L"Aliases",
Status = LsaOpenPolicy(NULL,
&ObjectAttributes,
- POLICY_TRUST_ADMIN,
+ POLICY_VIEW_LOCAL_INFORMATION,
&PolicyHandle);
if (Status != STATUS_SUCCESS)
{
{
SampCreateAliasAccount(hDomainKey,
L"Administrators",
- L"",
+ L"Testabc1234567890",
DOMAIN_ALIAS_RID_ADMINS);
SampCreateAliasAccount(hDomainKey,
L"Users",
- L"",
+ L"Users Group",
DOMAIN_ALIAS_RID_USERS);
SampCreateAliasAccount(hDomainKey,
L"Guests",
- L"",
+ L"Guests Group",
DOMAIN_ALIAS_RID_GUESTS);
SampCreateAliasAccount(hDomainKey,
L"Power Users",
- L"",
+ L"Power Users Group",
DOMAIN_ALIAS_RID_POWER_USERS);