Форум: "Система";
Текущий архив: 2003.05.19;
Скачать: [xml.tar.bz2];
ВнизИзменения пароля пользователя 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c