На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

How to Create a New Computer Account



This section demonstrates how to create a new computer account in Windows NT.

The following are considerations for managing computer accounts:

· The computer account name should be all uppercase for consistency with Windows NT account management utilities.
· A computer account name always has a trailing dollar sign ($). Any functions used to manage computer accounts must build the computer name such that the last character of the computer account name is a dollar sign ($). For interdomain trust, the account name is TrustingDomainName$.
· The maximum computer name length is MAX_COMPUTERNAME_LENGTH (15). This length does not include the trailing dollar sign ($).

· The password for a new computer account should be the lowercase representation of the computer account name, without the trailing dollar sign ($). For interdomain trust, the password can be an arbitrary value that matches the value specified on the trust side of the relationship.
· The maximum password length is LM20_PWLEN (14). The password should be truncated to this length if the computer account name exceeds this length.
· The password provided at computer-account-creation time is valid only until the computer account becomes active on the domain. A new pasword is established during trust relationship activation.



#include
#include

BOOL AddMachineAccount(
LPWSTR wTargetComputer,
LPWSTR MachineAccount,
DWORD AccountType
)
{
LPWSTR wAccount;
LPWSTR wPassword;
USER_INFO_1 ui;
DWORD cbAccount;
DWORD cbLength;
DWORD dwError;

//
// Ensure a valid computer account type was passed.
//

if (AccountType != UF_WORKSTATION_TRUST_ACCOUNT &&
AccountType != UF_SERVER_TRUST_ACCOUNT &&
AccountType != UF_INTERDOMAIN_TRUST_ACCOUNT
)
{
SetLastError(ERROR_INVALID_PARAMETER);
return FALSE;
}

//
// Obtain number of chars in computer account name.
//
cbLength = cbAccount = lstrlenW(MachineAccount);

//

// Ensure computer name doesn't exceed maximum length.
//
if(cbLength > MAX_COMPUTERNAME_LENGTH) {
SetLastError(ERROR_INVALID_ACCOUNT_NAME);
return FALSE;
}

//
// Allocate storage to contain Unicode representation of
// computer account name + trailing $ + NULL.
//
wAccount=(LPWSTR)HeapAlloc(GetProcessHeap(), 0,
(cbAccount + 1 + 1) * sizeof(WCHAR) // Account + '$' + NULL

);

if(wAccount == NULL) return FALSE;

//
// Password is the computer account name converted to lowercase
// you will convert the passed MachineAccount in place.
//
wPassword = MachineAccount;

//
// Copy MachineAccount to the wAccount buffer allocated while
// converting computer account name to uppercase.
// convert password (inplace) to lowercase.

//
while(cbAccount--) {
wAccount[cbAccount] = towupper( MachineAccount[cbAccount] );
wPassword[cbAccount] = towlower( wPassword[cbAccount] );
}

//
// Computer account names have a trailing Unicode '$'.
//
wAccount[cbLength] = L'$';
wAccount[cbLength + 1] = L'\0'; // terminate the string

//
// If the password is greater than the max allowed, truncate.

//
if(cbLength > LM20_PWLEN) wPassword[LM20_PWLEN] = L'\0';

//
// Initialize USER_INFO_x structure.
//
ZeroMemory(&ui, sizeof(ui));

ui.usri1_name = wAccount;
ui.usri1_password = wPassword;

ui.usri1_flags = AccountType | UF_SCRIPT;
ui.usri1_priv = USER_PRIV_USER;

dwError=NetUserAdd(
wTargetComputer, // target computer name

1, // info level
(LPBYTE) &ui, // buffer
NULL
);

//
// Free allocated memory.
//
if(wAccount) HeapFree(GetProcessHeap(), 0, wAccount);

//
// Indicate whether the function was successful.
//
if(dwError == NO_ERROR)
return TRUE;
else {

SetLastError(dwError);
return FALSE;
}
}


The user that calls the account management functions must have Administrator privilege on the target computer. In the case of existing computer accounts, the creator of the account can manage the account, regardless of administrative membership.

The SeMachineAccountPrivilege can be granted on the target computer to give specified users the ability to create computer accounts. This gives non-administrators the ability to create computer accounts. The caller needs to enable this privilege prior to adding the computer account.


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Как, чтобы Создавать Новый Компьютерный Счет



Эта секция демонстрирует как, чтобы создавать новый компьютерный счет в Windows NT.

Следующее является соображениями чтобы управлять компьютерными отчетностями:

Компьютерное учетное имя должно быть всем верхним регистром для согласованности с учетной полезностью управления Windows NT.
Компьютерное учетное имя всегда имеет конечный знак доллара ($). Любые функции использованные, чтобы управлять компьютером, отчетности должны построить компьютерное имя так что последний тип компьютерного учетного имени является знаком доллара ($). Для interdomain доверия, учетное имя - TrustingDomainName$.
Максимальная компьютерная длина имени - MAX_COMPUTERNAME_LENGTH (15). Эта длина не включает конечный знак доллара ($).

Пароль для нового компьютерного счета должен быть представлением верхнего регистра компьютерного учетного имени, без конечного знака доллара ($). Для interdomain доверия, пароль может быть произвольной величиной, которая соответствует величине определялся на стороне доверия отношения.
Максимальная длина пароля - LM20_PWLEN (14). Пароль должен быть исключен на эту длину если компьютерное учетное имя превышает эту длину.
Пароль приведенный в компьютерном-учетном создании времени - в силе только пока компьютерный счет не станет активным в области. Новый pasword установлено в течение активизации отношения доверия.



#include #include

BOOL AddMachineAccount( LPWSTR wTargetComputer, LPWSTR MachineAccount, DWORD AccountType
)
{
LPWSTR wAccount;
LPWSTR wPassword;
ui USER_INFO_1;
DWORD cbAccount;
DWORD cbLength;
dwError DWORD;

//
// Гарантируйте что правильный компьютерный учетный тип был пройден.
//

если (AccountType != UF_WORKSTATION_TRUST_ACCOUNT && AccountType != UF_SERVER_TRUST_ACCOUNT && AccountType != UF_INTERDOMAIN_TRUST_ACCOUNT
)
{
SetLastError(ERROR_INVALID_PARAMETER);
обратная ЛОЖЬ;
}

//
// Получите количество символов в компьютерном учетном имени.
//
cbLength = cbAccount = lstrlenW(MachineAccount);

//

// Проверьте, что компьютерное имя не превышает максимальную длину.
//
если(cbLength > MAX_COMPUTERNAME_LENGTH) { SetLastError(ERROR_INVALID_ACCOUNT_NAME);
обратная ЛОЖЬ;
}

//
// Распределите хранение, чтобы содержать представление Уникода // компьютерного учетного имени + прослеживание $ + НЕДЕЙСТВИТЕЛЬНЫЙ.
//
wAccount=(LPWSTR)HeapAlloc(GetProcessHeap(), 0, (cbAccount + 1 + 1) * sizeof(WCHAR) // Счет + '$' + НЕДЕЙСТВИТЕЛЬНЫЙ

);

если(wAccount == НЕДЕЙСТВИТЕЛЬНЫЙ) обратная ЛОЖЬ;

//
// Пароль является компьютерным учетным именем преобразовывался в верхний регистр //, который Вы преобразоваете прошедший MachineAccount на месте.
//
wPassword = MachineAccount;

//
// Скопируйте MachineAccount в буфер wAccount распределенный пока // конвертирующее компьютерное учетное имя в верхний регистр.
// пароль преобразования (inplace) в верхний регистр.

//
пока(cbAccount--) {
wAccount[cbAccount] = towupper( MachineAccount[cbAccount] );
wPassword[cbAccount] = towlower( wPassword[cbAccount] );
}

//
// Учетные имена Компьютера имеют конечный Уникод '$'.
//
wAccount[cbLength] = L'$';
wAccount[cbLength + 1] = L'\0'; // завершите строку

//
// Если пароль больше, чем max допущенный, исключитесь.

//
если(cbLength > LM20_PWLEN) wPassword[LM20_PWLEN] = L'\0';

//
// Инициализируйте структуру USER_INFO_x.
//
ZeroMemory(&ui, sizeof(ui));

ui.usri1_name = wAccount;
ui.usri1_password = wPassword;

ui.usri1_flags = AccountType | UF_SCRIPT;
ui.usri1_priv = USER_PRIV_USER;

dwError=NetUserAdd(
wTargetComputer, // ЦЕЛЕВОЕ компьютерное имя

1, // инфо уровень (LPBYTE) &ui, // буферный НЕДЕЙСТВИТЕЛЬНЫЙ
);

//
// Свободный распределившее память.
//
если(wAccount) HeapFree(GetProcessHeap(), 0, wAccount);

//
// Укажите имела успех функция.
//
если(dwError == NO_ERROR) обратная ИСТИНА;
еще {

SetLastError(dwError);
обратная ЛОЖЬ;
}
}


Потребитель, который называет учетные функции управления должно иметь привилегию Администратора в целевом компьютере. В случае существующих компьютерных отчетностей, создатель счета может управлять счетом, независимо от административного членства.

SeMachineAccountPrivilege Может предоставлять в целевом компьютере, чтобы давать определенным потребителям способность создавать компьютерные отчетности. Это дает не-администраторам способность создавать компьютерные отчетности. Вызывающему оператору нужно приспосабливаться эту привилегию до дополнения компьютерного счета.


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz