Einzelnen Beitrag anzeigen

Benutzerbild von Net7
Net7

Registriert seit: 22. Jun 2004
Ort: Lauenburg
161 Beiträge
 
Delphi 7 Professional
 
#6

AW: Computer ID und Verarbeitung

  Alt 5. Feb 2011, 17:22
Also ich würde so vorgehen,


zu Frage 1: Die Systemsid ermitteln
Delphi-Quellcode:
function ConvertSidToStringSid(SID: PSID; var StringSid: LPSTR): Boolean; stdcall;
external 'advapi32.dllname 'ConvertSidToStringSidA';

 function GetAccountSid(const Server, User: WideString; var Sid: PSID): DWORD;
var
  dwDomainSize, dwSidSize: DWord;
  R: LongBool;
  wDomain: WideString;
  Use: DWord;
begin
  Result := 0;
  SetLastError(0);
  dwSidSize := 0;
  dwDomainSize := 0;
  R := LookupAccountNameW(PWideChar(Server), PWideChar(User), nil, dwSidSize, nil, dwDomainSize, Use);
  if (not R) and (GetLastError = ERROR_INSUFFICIENT_BUFFER) then
    begin
      SetLength(wDomain, dwDomainSize);
      Sid := GetMemory(dwSidSize);
      R := LookupAccountNameW(PWideChar(Server), PWideChar(User), Sid, dwSidSize, PWideChar(wDomain), dwDomainSize, Use);
      if not R then
        begin
          FreeMemory(Sid);
          Sid := nil;
        end;
    end
  else
    Result := GetLastError;
end;

function GetSystemSID: string;
var
  SID: PSID;
  strSID: PChar;
  CName: array[0..255] of Char;
  nSize: Cardinal;
begin
  Result := '';
  GetComputerName(CName, nSize);
  if GetAccountSid('', CName, SID) = 0 then begin
      ConvertSidToStringSid(SID, strSID);
      Result := strSid;
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.Lines.Add('System SID:'+GetSystemSID);

end;
Zu Frage 2:

Eine Möglichkeit wäre einen CRC32 ( in uses crc32 aufnehmen ) aus dieser Sid zu erstellen zb.
Delphi-Quellcode:
function CheckSum(Sid: string): string;
var
  CRC32: DWORD;
  STemp: string;
  SS: string;
begin
  STemp := '';
  ss := '';
  ss := Sid;

  CRC32 := $FFFFFFFF;
  if LENGTH(ss) > 0
    then CalcCRC32(Addr(ss[1]), LENGTH(ss), CRC32);

  STemp := IntToHex(CRC32, 8);
  Result := STemp;

end;
Und daraus kannst du deine Seriennummer erstellen und mit Bindestrichen versehen.
Marko
So`ne Atombombe kann einem den ganzen Tag verderben!
Eine eigene DLL in C++ geschrieben wird meist ein Sklave für mein Delphi/Pascal.
  Mit Zitat antworten Zitat