Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.19;
Скачать: CL | DM;

Вниз

Изменения пароля пользователя Windows   Найти похожие ветки 

 
Darkwin ©   (2003-03-21 12:36) [0]

Народ, подскажите плз, как можно программно поменять пароль для пользователя домена Win2000, зная его логин и текущий пароль. Программа будет работать на контролере домена (сервисом), и несколько раз в день будет менять пароль для доступа к определенному ресурсу. Или ткните меня куда-нибудь где это описано.
Заранее благодарен.


 
Clickmaker ©   (2003-03-21 13:31) [1]

NetUserChangePassword


 
Darkwin ©   (2003-03-21 13:58) [2]

Точно и сам только что нашел. Но все равно спасибо. А в каком модуле она содержится? В хелпе, в quikinfo ссылка на файлы netapi32.lib и Imaccess.h...


 
Darkwin ©   (2003-03-21 14:12) [3]

вопрос снят: тупанул, естественно netapi32.dll


 
Darkwin ©   (2003-03-21 16:03) [4]

блин, опять открыт :((
что это за тип такой (сишный) 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 16:05) [5]

да еще: в MSDN я описания NET_API_STATUS не нашел, хотя примеров кода с использованием этого типа полно, естественно на си


 
Clickmaker ©   (2003-03-21 16:12) [6]

NET_API_STATUS это банальный DWORD или cardinal


 
Darkwin ©   (2003-03-21 17:01) [7]

ладно, сделал вот так:

{$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 17:07) [8]

Соглашение о вызовах виндозное не учел
function NetUserChangePassword(NomainName,UserName,OldPasword,NewPassword:LPWSTR):NET_API_STATUS; stdcall; external "netapi32.dll" name "NetUserChangePassword";
Да и параметры то она требует уникодные, без StringToWideChar не обойтись, пожалуй.
И в блок except она и не вылетит никогда, надо результат проверять, NET_API_STATUS


 
Romkin ©   (2003-03-21 17:08) [9]

stdcall забыл :-))


 
Darkwin ©   (2003-03-21 17:13) [10]

ураааа, огромное спасибо, блин я бы еще часа три на прогу пялился пока не заметил бы этот stdcall



Страницы: 1 вся ветка

Текущий архив: 2003.05.19;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
14-59860
SPeller
2003-04-28 12:28
2003.05.19
Глюки Access 2000


3-59596
sts
2003-04-25 12:37
2003.05.19
ODAC, SAVEPOINTs


14-59911
sanilo
2003-04-28 09:31
2003.05.19
Загрузочная дискета & XP


7-59968
SaperXL
2003-03-23 11:12
2003.05.19
разрешение принтера


14-59873
Шоломицкий
2003-04-28 22:43
2003.05.19
Срочно! Ваше мнение! Как вы думаете?