相关疑难解决方法(0)

将SID翻译成名称

我的Delphi 2010应用程序需要将Windows用户添加到本地Administrators组.我使用NetLocalGroupAddMembers使这部分工作.

现在,应用程序需要在Windows的本地化版本中使用其他语言.为此,我使用带有LsaLookupSids函数的SID来获取组的已翻译名称,但由于我不知道如何进行API调用而无法执行此操作.

我很感激有人可以告诉我如何使用LsaLookupSids函数从SID获取组名(英文版美国版Windows中的"Administrators").

以下是我的代码:

function AddUser(const username, password: PChar; resetpassword: boolean): boolean; stdcall;
var
  NetApiStatus: NET_API_STATUS;
  UserInfo1003: USER_INFO_1003;
  UserInfo1005: USER_INFO_1005;
  ui: USER_INFO_1;
  grp: String;
  sid: PSID;
  snu: SID_NAME_USE;
  sidsize: LongWord;
  refdomain: PLsaReferencedDomainList; //array [0..MAX_PATH - 1] of char;
  refdomainsize: LongWord;
  sidstring: PChar;
  lgmi3: _LOCALGROUP_MEMBERS_INFO_3;
  reftranname: PLsaTranslatedName;
begin
  if UserExists(username) then begin


    sidstring := PChar('S-1-5-32-544'); //Local Administrators group

    refdomain := AllocMem(SizeOf(refdomain));
    FillChar(refdomain, SizeOf(refdomain), 0);

    reftranname := AllocMem(SizeOf(reftranname));

    sidsize := 0;
    sid := nil;
    sid := AllocMem(Length(sidstring) );
    sid := PChar(sidstring); …
Run Code Online (Sandbox Code Playgroud)

delphi winapi

3
推荐指数
1
解决办法
3242
查看次数

标签 统计

delphi ×1

winapi ×1