Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

нужен пример!!! [D6, NT4, Win2k, WinXP]


SuMaga ©   (2002-07-26 14:24:00) 

нужен пример(ну или совет) как добавить пользователя в ос програмvно :)


Proton   (2002-07-26 19:27:00) [1]

Author>:
Sergey Andyk (Сергей Андык)
(2:5005/58.43)
asvzzz@chat.ru
.

Q>:
Как создать юзера и дать ему права?
A>:
NET_API_STATUS UserAdd(LPSTR username)
{

// некоторые используемые функции описаны в других QA

USER_INFO_2 user_info;

char compname[256];
wchar_t wcompname[256];
DWORD parm_err=0;
LSA_HANDLE PolicyHandle;

LPTSTR lpszSystemInfo; // ptr. to system info. string
DWORD cchBuff = 256; // size of comp. or user name
TCHAR tchBuffer2[256]; // buffer for concat"d. str.
WCHAR wGroupNameAdd[20]=L"Administrators";
lpszSystemInfo = tchBuffer2;
ZeroMemory(&user_info,sizeof(user_info));

GetComputerName(lpszSystemInfo, &cchBuff);
strcpy(compname,"\\\\");
strcat(compname,lpszSystemInfo);

mbstowcs( wcompname, compname, strlen(compname)+1 );
mbstowcs(user_info.usri2_name,username, strlen(username)+1 );

//-------создаем юзера------------//

user_info.usri2_password = L"";
user_info.usri2_priv = USER_PRIV_USER;
user_info.usri2_flags =
UF_SCRIPT|UF_PASSWD_CANT_CHANGE|UF_DONT_EXPIRE_PASSWD|UF_NORMAL_ACCOUNT;
user_info.usri2_acct_expires=TIMEQ_FOREVER;

NetUserAdd(wcompname,// PDC name
2L, // level
(LPBYTE)&user_info, // input buffer
&parm_err ); // parameter in error

GetAccountSid(
NULL, // default lookup logic
username, // account to obtain SID
&pSid // buffer to allocate to contain resultant SID
);

NetLocalGroupAddMember(0,wGroupNameAdd,pSid);

//---------даем ему кое-какие права-----------//

OpenPolicy(
wcompname, // target machine
POLICY_ALL_ACCESS, //POLICY_CREATE_ACCOUNT | POLICY_LOOKUP_NAMES,
&PolicyHandle // resultant policy handle
);


SetPrivilegeOnAccount(
PolicyHandle, // policy handle
pSid, // SID to grant privilege
L"SeInteractiveLogonRight", // Unicode privilege
TRUE // enable the privilege
);

SetPrivilegeOnAccount(
PolicyHandle, // policy handle
pSid, // SID to grant privilege
L"SeNetworkLogonRight", // Unicode privilege
TRUE // enable the privilege
);


LsaClose(PolicyHandle);

return 0;
}
//***************************************************************************//

Author>:
Sergey Andyk (Сергей Андык)
(2:5005/58.43)
asvzzz@chat.ru
.


Mike_Goblin   (2002-07-26 16:55:00) [2]

Для Win 2000 см тут
http://msdn.microsoft.com/code/default.asp?URL=/code/sample.asp?url=/MSDN-FILES/026/001/159/msdncompositedoc.xml
Правда пример на VB


Наверх

Титульная страница Поиск, карта сайта Написать письмо