_nic
06.01.2009, 19:58
Вот нашол тут http://borland.xportal.ru/forum/viewtopic.php?t=12828&start=5
Такой код:
PWCHAR domain = NULL;
PSID psid = NULL;
do {
//Cоздаем новый аккаунт на лоакльной машине
USER_INFO_1 ui;
DWORD dwLevel = 1;
DWORD dwError = 0;
ui.usri1_name = L"user1";
ui.usri1_password = L"1111111";
ui.usri1_priv = USER_PRIV_USER;
ui.usri1_home_dir = NULL;
ui.usri1_comment = NULL;
ui.usri1_flags = UF_SCRIPT;
ui.usri1_script_path = NULL;
NET_API_STATUS nStatus = NetUserAdd(NULL,
dwLevel,
(LPBYTE)&ui,
&dwError);
if ( nStatus != NERR_Success )
break;
//Определяем SID созданного аккаунта
DWORD sid_size = 0;
DWORD domain_size = 0;
SID_NAME_USE snu;
//Первый вызов возвратит размер буферов
LookupAccountNameW( NULL, L"user1", NULL, &sid_size,
NULL, &domain_size, &snu );
if ( !( domain = (PWCHAR)malloc( 2*(domain_size + 1 ) ) ) )
break;
if ( !( psid = malloc( sid_size ) ) )
break;
if ( !LookupAccountNameW( NULL, L"user1", psid, &sid_size,
domain, &domain_size, &snu ) )
break;
//Добавляем созданного пользователя в локальную группу администраторов
LOCALGROUP_MEMBERS_INFO_0 lmi0 = { psid };
nStatus = NetLocalGroupAddMembers( NULL,
L"Administrators",
0,
(LPBYTE)&lmi0,
1 );
} while ( 0 );
if ( domain )
free( domain );
if ( psid )
free( psid );
Только вот он неработает :( Новый пользователь непоявляется.У кого какие мысли по чему?Может процессу прав нехватает?
___________________________________________
GetLastError возвращяет ERROR_IO_PENDING Я вообще запутался :(
Такой код:
PWCHAR domain = NULL;
PSID psid = NULL;
do {
//Cоздаем новый аккаунт на лоакльной машине
USER_INFO_1 ui;
DWORD dwLevel = 1;
DWORD dwError = 0;
ui.usri1_name = L"user1";
ui.usri1_password = L"1111111";
ui.usri1_priv = USER_PRIV_USER;
ui.usri1_home_dir = NULL;
ui.usri1_comment = NULL;
ui.usri1_flags = UF_SCRIPT;
ui.usri1_script_path = NULL;
NET_API_STATUS nStatus = NetUserAdd(NULL,
dwLevel,
(LPBYTE)&ui,
&dwError);
if ( nStatus != NERR_Success )
break;
//Определяем SID созданного аккаунта
DWORD sid_size = 0;
DWORD domain_size = 0;
SID_NAME_USE snu;
//Первый вызов возвратит размер буферов
LookupAccountNameW( NULL, L"user1", NULL, &sid_size,
NULL, &domain_size, &snu );
if ( !( domain = (PWCHAR)malloc( 2*(domain_size + 1 ) ) ) )
break;
if ( !( psid = malloc( sid_size ) ) )
break;
if ( !LookupAccountNameW( NULL, L"user1", psid, &sid_size,
domain, &domain_size, &snu ) )
break;
//Добавляем созданного пользователя в локальную группу администраторов
LOCALGROUP_MEMBERS_INFO_0 lmi0 = { psid };
nStatus = NetLocalGroupAddMembers( NULL,
L"Administrators",
0,
(LPBYTE)&lmi0,
1 );
} while ( 0 );
if ( domain )
free( domain );
if ( psid )
free( psid );
Только вот он неработает :( Новый пользователь непоявляется.У кого какие мысли по чему?Может процессу прав нехватает?
___________________________________________
GetLastError возвращяет ERROR_IO_PENDING Я вообще запутался :(