![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Изменения пароля пользователя Windows [D6, Win2k, WinXP]
Darkwin © (2003-03-21 12:36:00)Народ, подскажите плз, как можно программно поменять пароль для пользователя домена Win2000, зная его логин и текущий пароль. Программа будет работать на контролере домена (сервисом), и несколько раз в день будет менять пароль для доступа к определенному ресурсу. Или ткните меня куда-нибудь где это описано.
Заранее благодарен.
Darkwin (2003-03-21 17:13:00) [1]ураааа, огромное спасибо, блин я бы еще часа три на прогу пялился пока не заметил бы этот stdcall
Romkin (2003-03-21 17:08:00) [2]stdcall забыл :-))
Clickmaker (2003-03-21 17:07:00) [3]Соглашение о вызовах виндозное не учел
function NetUserChangePassword(NomainName,UserName,OldPasword,NewPassword:LPWSTR):NET_API_STATUS; stdcall;external "netapi32.dll" name "NetUserChangePassword";
Да и параметры то она требует уникодные, без StringToWideChar не обойтись, пожалуй.
И в блок except она и не вылетит никогда, надо результат проверять, NET_API_STATUS
Darkwin (2003-03-21 17:01:00) [4]ладно, сделал вот так:
{$EXTERNALSYM NET_API_STATUS}
NET_API_STATUS = LongWord;
{$EXTERNALSYM NetUserChangePassword}
function NetUserChangePassword(NomainName,UserName,OldPasword,NewPassword:LPWSTR):NET_API_STATUS; external "netapi32.dll" name "NetUserChangePassword";
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
domen,name,oldpass,newpass:LPWSTR;
begin
rez:=0;
domen:="\\WaPBBS.landos.ru";
name:="GA";
OldPass:="1";
NewPass:="2";
try
NetUserChangePassword(domen,Name,OldPass,NewPass);
except
ShowMessage("Error");
end;
end;
вроде бы все типы соблюдены.
Самое интересное, что NetUserChangePassword выполняется, управление в блок except не передается, а при выходе из процедуры вылетает ошибка(если запускаю проект из дельфей), а если запускаю экзешник то прога вылетает (в ускоренном порядке закрывается :))))
че за фигня такая? винда отсервиспатчена 3 сервиспаком. тут кода то - кот наплакал, где ошибка может быть не знаю, может эта функция вообще не работает?
Clickmaker (2003-03-21 16:12:00) [5]NET_API_STATUS это банальный DWORD или cardinal
Darkwin (2003-03-21 16:05:00) [6]да еще: в MSDN я описания NET_API_STATUS не нашел, хотя примеров кода с использованием этого типа полно, естественно на си
Darkwin (2003-03-21 16:03:00) [7]блин, опять открыт :((
что это за тип такой (сишный) NET_API_STATUS, и что вместо него использовать в дельфи? или я может не так функцию импортирую?
function NetUserChangePassword(NomainName,UserName,OldPassword,NewPassword:LPWSTR):integer; external "netapi32.dll" name "NetUserChangePassword";
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
NetUserChangePassword("WaPBBS","GA","1","2");
end;
после выполнения этой функции выскакивает ошибка и окно отладки кода...
Darkwin (2003-03-21 14:12:00) [8]вопрос снят: тупанул, естественно netapi32.dll
Darkwin (2003-03-21 13:58:00) [9]Точно и сам только что нашел. Но все равно спасибо. А в каком модуле она содержится? В хелпе, в quikinfo ссылка на файлы netapi32.lib и Imaccess.h...
Clickmaker (2003-03-21 13:31:00) [10]NetUserChangePassword