Translate SID to name

后端 未结 2 2109
终归单人心
终归单人心 2021-01-06 22:10

My Delphi 2010 application needs to add a Windows user to the local Administrators group. I got this part working using NetLocalGroupAddMembers.

Now the application

2条回答
  •  谎友^
    谎友^ (楼主)
    2021-01-06 23:02

    Simple example using JCL. You also could same using http://blog.delphi-jedi.net/security-library/ (like TJwSecurityId).

    This code does not use LsaLookupSids, but internally LookupAccountSid (but for local group I don't think that it does matter).

    uses
      JclSecurity, JclWin32;
    
    // Raises exception in case of invalid ASID or if SID is not found
    function GetNameFromSid(ASID: String): String;
    var
      lSidLen: DWORD;
      lSid: PSID;
      lName, lDomain: WideString;
    begin
      lSidLen := SECURITY_MAX_SID_SIZE;
    
      lSid := AllocMem(lSidLen);
      try
        StringToSID(ASID, lSid, lSidLen);
        LookupAccountBySid(lSid, lName, lDomain);
        Result := lName;
      finally
        FreeMem(lSid);
      end;
    end;
    

提交回复
热议问题