将 SID 转换为名称

2023-12-02

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

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

如果有人能告诉我如何使用 LsaLookupSids 函数从 SID 获取组名称(美国英语版 Windows 中的“管理员”),我将不胜感激。

以下是我的代码:

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);
    try
      LsaLookupSids(GetPolicyHandle, 1, sid, refdomain, reftranname);
      grp := reftranname^.Name.Buffer;
      showmessage('messg ' + grp);
    finally
      FreeMem(sid, sidsize);
    end;
  end;

您不需要 LsaLookupSids,这用于查找或 SID 数组。 单个 SID 的查找通常使用 LookupAccountSid 完成。例子:

uses JwaWindows; // or JwaSddl, JwaWinBase;
    var
      Sid: PSID;
      peUse: DWORD;
      cchDomain: DWORD;
      cchName: DWORD;
      Name: array of Char;
      Domain: array of Char;
    begin
      Sid := nil;
      // First convert String SID to SID
      Win32Check(ConvertStringSidToSid(PChar('S-1-5-32-544'), Sid));

      cchName := 0;
      cchDomain := 0;
      // Get Length
      if (not LookupAccountSid(nil, Sid, nil, cchName, nil, cchDomain, peUse))
        and (GetLastError = ERROR_INSUFFICIENT_BUFFER) then
      begin
        SetLength(Name, cchName);
        SetLength(Domain, cchDomain);
        if LookupAccountSid(nil, Sid, @Name[0], cchName, @Domain[0], cchDomain, peUse) then
        begin
           // note: cast to PChar because LookupAccountSid returns zero terminated string
           ShowMessageFmt('%s\%s', [PChar(Domain), PChar(Name)]);
        end;
      end;

      if Assigned(Sid) then
        LocalFree(DWORD(Sid));

或者使用 Jwscl 更容易:

uses JwsclSid;

    var
      Sid: TJwSecurityId;
    begin
      Sid := TJwSecurityId.Create('S-1-5-32-544');
      try
        ShowMessage(Sid.GetAccountName);
      finally
        Sid.Free;
      end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 SID 转换为名称 的相关文章

  • 使用 MapViewOfFile 有什么限制吗?

    我正在尝试将内存映射文件用作 hFile CreateFile State Path GENERIC READ FILE SHARE READ FILE SHARE WRITE 0 OPEN EXISTING FILE FLAG SEQUE
  • 如何从具有管理员权限的应用程序接收键盘输入到非管理员应用程序?

    我编写了一个应用程序 该应用程序具有覆盖类型的窗口 可以通过热键显示和隐藏该窗口 而另一个应用程序具有焦点 所述另一个应用程序是一个以管理员权限运行的 DirectX 游戏 我已经尝试了 3 种可能的解决方案 以便在其他应用程序中按下我的热
  • VCL.位图到 FMX.位图

    我在网上找到了这段代码 但 FMX Bitmap 没有扫描线 是否可以以某种方式将 VCL TBitmap 复制或绘制到 FMX Bitmap IFDEF MSWINDOWS type TBitmap FMX Types TBitmap T
  • 加载 Jpg/Gif/Bitmap 并转换为 Bitmap

    我必须从 XML 文件加载图像 XML 文件中没有关于图像是否为 JPG GIF BMP 的信息 加载图像后 我需要将其转换为位图 有谁知道如何在不知道实际文件格式的情况下将图像转换为位图 我正在使用 Delphi 2007 2009 谢谢
  • 如何获取与Windows主题相关的图标?

    如何获取Windows中某个控件的图标 更具体地说 我想从 ListView 标题中获取排序箭头图标 我尝试使用以下方法来获取它 HRESULT GetSortArrowBmp HWND hwnd HEADERSORTARROWSTATES
  • 在运行时按需更改组件类

    我的问题与这里的想法类似 替换delphi中的组件类 https stackoverflow com q 4685863 937125 但我需要改变一个specific按需组件类 这是一些伪演示代码 unit Unit1 TForm1 cl
  • 开源 Delphi 包可使用哪些项目选项?

    我写了一些 Delphi 代码 想在 GitHub 上分享 所有代码都根据需要包含在运行时和设计时包中 每个项目有许多项目选项需要设置 输出目录 搜索路径 编译选项等 我设法找到了一些适合我的情况的默认选项 但阅读此处的其他问答很明显有多个
  • 当显示对话框时淡出应用程序的所有其他窗口?

    如何在 Delphi 2009 中调暗 淡出应用程序的所有其他窗口 Form 有一个 AlphaBlend 属性 但它仅控制透明度级别 但如果我们能有这样的东西那就太好了 集中窗口 http www anappaday com downlo
  • 如何根据输入的内容过滤组合框的内容?

    我们有一个包含 100 多个项目的组合框 当我们在组合框中输入字符时 我们想要过滤掉项目 例如 如果我们输入 ac 并单击下拉选项 那么我们希望它仅显示以 ac 开头的项目 我怎样才能做到这一点 也许您会更喜欢使用操作系统内置的自动完成功能
  • 带位图的简单组合框

    如何将位图放入组合框中并将样式设置为简单 例如 Google Chrome 的右侧有星号 Firefox 的右侧有箭头 我尝试了这段代码 procedure TForm2 ComboBox1DrawItem Control TWinCont
  • WIN32,C++:是否可以在不隐藏窗口的情况下对窗口进行动画处理?

    我有一个编辑控件 一个文本字段 我想要为其设置动画 我想要的动画是它滑出 为该文本字段创建一条额外的线 我可以为我的文本字段设置动画并使其变大 但是要显示滑动动画 我首先必须隐藏它 这意味着整个文本字段会滑出 就像第一次从无到有一样 而不是
  • 使用 Python 将 Excel 中的图表导出为图像

    我一直在尝试将 Excel 中的图表导出为 Python 中的图像文件 JPG 或 ING 我正在查看 WIn32com 这是我到目前为止所拥有的 import win32com client as win32 excel win32 ge
  • 如何仅使用 TADOQuery 组件将图像插入数据库

    我有一个简单的基本问题 我正在尝试使用将图像插入数据库Insert与其他列值的语句也使用TADOQuery成分 由于代码已经由某人编写 因此我想在此处放置一些虚拟示例代码 以供您澄清相应的步骤 请注意 这可以正常工作TQuery组件 因为我
  • 32 位 OpenFileDialog --> 64 位 System32?

    在 32 位程序中 如何让打开 保存文件对话框显示 64 位系统的 System32 文件夹中的文件 Wow64DisableWow64FsRedirection不起作用 因为由于某种原因它不适用于对话框 我猜是因为它位于不同的线程上 当然
  • 如何在Delphi中下载一个非常简单的HTTPS页面?

    我尝试了在这里看到的代码 但它不适用于 HTTPS 我需要将此页面作为字符串下载 并在其上添加一些换行符 以便将信息按顺序放入 TMemo 中 怎么做 我尝试使用 Indy 但由于 SSL 问题而失败 我尝试了此页面的解决方案 如何将网页下
  • 支持 ARM 上的 Windows 10 桌面应用程序 - MFC 和 COM 以及 OPOS 可以工作吗?

    我试图了解将在 x86 Windows 10 上运行的 C MFC 应用程序移植到具有 Qualcomm Snapdragon 处理器的 ARM Windows 10 设备的障碍 32位应用程序具有以下特点 MFC 与 C 用于用户界面 C
  • 以编程方式最小化/恢复窗口,跳过动画效果

    我需要对窗口列表执行多项操作 最小化其中一些 恢复其他 以便立即在两组或多组窗口之间切换 这样做的问题是最小化和恢复窗口时可以看到的动画 整个过程看起来很糟糕 所有这些动画都进进出出 上下移动 但是 我无法禁用这些动画 因为这是针对其他计算
  • WinApi:获取 COM 表单的控件名称

    我想用 Net 框架替换我当前的 UI 自动化工具 QTP 我需要测试 VB6 COM 应用程序 框架的基础之一是使用表单名称 到目前为止 我未能找到使用 Win API 获取这些数据的方法 该解决方案只有一个约束 即该解决方案必须依赖 N
  • 更换 I 过滤器

    我目前正在使用 IFilters 从各种文件 word excel tiff pdf 等 中提取文本 据我所知 IFilter 已在 Windows 8 中停止使用 是否有人对如何在不安装本机应用程序的情况下提取文本有任何建议 如果有什么用
  • 当responseText包含有效的Xml时,IXMLHttpRequest.responseXml为空,没有解析错误

    我正在从中获取一些 XML政府网站 http www bankofcanada ca stats assets rates rss noon en all xml http www bankofcanada ca stats assets

随机推荐

  • 操作已完成 = YES,但没有由其所在的队列启动

    Overview 有一个异步操作子类 将此操作添加到队列中 我在开始之前取消了此操作 运行时错误 警告 SomeOperation went isFinished YES without being started by the queue
  • 如何创建AVPlayer单例类

    我在用着AVPlayer要从网址播放歌曲 我在视图控制器中初始化并分配它 现在我遇到了问题 当我导航到另一个视图控制器并返回主播放器时 播放歌曲详细信息和滑块更新应该保留 但问题是当我导航时再次到主播放器播放详细信息和滑块更新没有发生 但歌
  • TWICImage,如何设置jpeg压缩质量?

    我使用 Delphi XE 和 TWICImage 类进行图像处理 我想知道是否有办法使用 TWICImage 设置 jpeg 压缩质量 procedure TfrmMain Button2Click Sender TObject var
  • 将 jQuery 与 Shadow dom 结合使用

    这里我用 Shadow dom 创建了元素 some preparing code this createShadowRoot creates shadow root this refers to element 稍后在代码中我将访问我创建
  • PHP 使用会话登录

    我是 PHP 的初学者 我尝试创建我的 php 登录代码 但遇到了一些问题 如果我访问其他页面 我的网站不会记住我登录过 会话不会保留
  • 多个读取器更快地读取文件

    所以我有一个大文件 大约有 200 万行 文件读取是我的代码中的瓶颈 欢迎任何建议的方法和专家意见来更快地阅读文件 从该文本文件中读取行的顺序并不重要 所有行都是管道 分隔的固定长度记录 我尝试了什么 我开始并行StreamReader并确
  • Internet Explorer 获取内部 IP 地址

    我正在寻找一种解决方案来获取人们在 IE 中的内部 IP 地址 不使用 java 或 java applet Java 中的等效项如下所示 this sock bind new java net InetSocketAddress 0 0
  • 获取 VBA Excel 2010 中所有字体的列表

    我正在使用 Excel VBA 我想获取组合框中所有字体的列表 任何人都可以帮助我吗 我尝试了这段代码 但在 listcount 中出现错误 Set FontList Application CommandBars Formatting F
  • 为什么这段 Objective-C 代码无法播放 AVPlayerViewController 视频?

    Both are in viewDidLoad What s wrong with this objective c source file The swift version works like a charm Xcode ver 8
  • mpdf 在 Google Chrome 中无法工作,但在 Firefox 中工作正常

    使用 mPDF 创建 PDF 文档时 我再次陷入困境 我已经完成了以下代码 该代码在 Firefox 和 Safari 中运行良好 但在 Google Chrome 中不起作用 require once mpdf60 mpdf php mp
  • 一起使用 Solr 和 Zends Lucene 端口

    下午小伙伴们 在我尝试了 Zend Lucene Search 并发现它在索引大型数据集时并不像人们想象的那样 我转向了 Solr 感谢 Bill Karwin 现在 Solr 为数据库建立索引的速度要快得多 只需 8 分钟多一点即可为包含
  • YouTube 嵌入:如何在 Android 版 Chrome 中启用*非静音*自动播放

    这个问题基本上与this one它有一个针对 HLTML5 视频的解决方案 除了更改chrome flags to set gesture requirement for media playback to disabled对 YouTub
  • chrome.webRequest redirectUrl,URL 保存在 chrome.storage.local 中

    我试图拦截网络请求并将它们重定向到我保存在本地存储上的网址 但它不起作用 我的代码如下 chrome webRequest onBeforeRequest addListener function details if details ur
  • 没有工作数据库连接的 Django 管理命令

    我有许多使用以下配置模型的项目 settings py包括默认配置和配置规范 主要用于开发目的 默认设置 包括数据库设置 可以被外部配置文件覆盖 这些文件通常由管理员为其管理的各种环境定义 为了方便管理员 我写了一个管理命令并单独打包 其中
  • 通过 openFileDialog 打开 Web 文件夹 (Sharepoint 2007)

    我有以下用 C 编写的代码片段 openFileDialog1 InitialDirectory fwm storage users curUser My Documents My Pictures openFileDialog1 Filt
  • 在c中编写函数指针

    最近在看一段代码 发现函数指针的写法是 int fn pointer this args this args 我通常会遇到这样的函数指针 return type fn pointer arguments 类似的事情正在讨论here this
  • GTK+ 中的六边形按钮

    我正在尝试创建一个按钮GTK 其形状为六边形 我怎样才能做到不使用CSS 更一般地说 我如何创建我想要的任何形状的按钮 是否可以做这样的事情Glade GTK 的用户界面编辑器 当我发表评论时 我是在虚张声势 因为我从未做过圆形按钮 我只是
  • 将相似的字符串分组

    我正在尝试分析一堆搜索词 数量太多 单独来看并不能说明什么 也就是说 我想对这些术语进行分组 因为我认为相似的术语应该具有相似的有效性 例如 Term Group NBA Basketball 1 Basketball NBA 1 Bask
  • 批处理脚本告诉我最后一次访问文件是什么时候

    我的文件夹中有一个销售订单列表 我想要一个批处理脚本 它可以输出到 txt 文件 所有文件最后一次访问但不一定被修改的时间是什么时候 在 NTFS 文件系统的分区上 有 3 个文件日期 创建日期 上次修改日期和上次访问日期 命令 dir p
  • 将 SID 转换为名称

    我的 Delphi 2010 应用程序需要将 Windows 用户添加到本地管理员组 我使用 NetLocalGroupAddMembers 使这部分工作 现在 该应用程序需要在具有其他语言的本地化版本的 Windows 中运行 为此 我使