Avatar billede loke-liscom Nybegynder
19. februar 2003 - 14:02 Der er 3 kommentarer og
1 løsning

Optimering af funktion

Kan denne funktion gøres simplere?

function NetChangePassword(Server, UserName, Password : string): LongWord;
var
  Buf : USER_INFO_1003;
  TmpServer : PWideChar;
  TmpUserName : PWideChar;
  TmpLength : LongInt;
begin
  TmpLength := Length(Password)*SizeOf(WideChar)+1;
  GetMem(Buf.usri1003_password, TmpLength);
  try
    StringToWideChar(Password, Buf.usri1003_password, TmpLength);
    TmpLength := Length(UserName)*SizeOf(WideChar)+1;
    GetMem(TmpUserName, TmpLength);
    try
      StringToWideChar(UserName, TmpUserName, TmpLength);
      TmpLength := Length(Server)*SizeOf(WideChar)+1;
      GetMem(TmpServer, TmpLength);
      try
        StringToWideChar(Server, TmpServer, TmpLength);
        Result := NetUserSetInfo(TmpServer, TmpUserName, 1003, @Buf, nil);
      finally
        FreeMem(TmpServer);
      end;
    finally
      FreeMem(TmpUserName);
    end;
  finally
    FreeMem(Buf.usri1003_password);
  end;
end;


//Klaus
Avatar billede snowball Novice
19. februar 2003 - 14:09 #1
function NetUserChangePassword(Domain: PWideChar; UserName: PWideChar; OldPassword: PWideChar;
  NewPassword: PWideChar): Longint; stdcall; external 'netapi32.dll'
  Name 'NetUserChangePassword';

// Changes a user's password for a specified network server or domain.
// Requirements:  Windows NT/2000/XP
// Windows 95/98/Me: You can use the PwdChangePassword function to change a user's
// Windows logon password on these platforms

procedure TForm1.Button1Click(Sender: TObject);
begin
  NetUserChangePassword(PWideChar(WideString('\\COMPUTER')),
    PWideChar(WideString('username')),
    PWideChar(WideString('oldpass')),
    PWideChar(WideString('newpass')));
end;

Burde være det samme de gør !?

Snowball
Avatar billede loke-liscom Nybegynder
19. februar 2003 - 14:30 #2
Hmm... typecast.. Nu skal man indtaste det gamle password i NetUserChangePassword. Da det er at "administrator" program så skal det ikke kande det gamle password. Jeg har dog ikke prøvet at typecaste til PWideString
Avatar billede loke-liscom Nybegynder
19. februar 2003 - 14:42 #3
Når du typecaster hvordan frigiver du så den allokerede hukommelse?
Avatar billede loke-liscom Nybegynder
03. marts 2003 - 08:13 #4
hmm
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Capgemini Danmark A/S

Client Partner

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Solution Manager til Cyberdivisionen

Rambøll Management Consulting

Senior Software Engineer