【问题标题】:"System Error. Code: 87" when calling ConvertStringSidToSid()调用 ConvertStringSidToSid() 时出现“系统错误。代码:87”
【发布时间】:2013-02-09 00:23:43
【问题描述】:

我必须为“Everyone”用户组的某个文件夹设置权限,所以我需要这个组的 SID。当我调用ConvertStringSidToSid() 时,我收到错误"System Error. Code: 87 - Parameter is incorrect"。为什么?我的代码有什么问题?

...
function ConvertStringSidToSid(StringSid: LPCTSTR; Sid: PSID): BOOL; stdcall;
  external Advapi32 name 'ConvertStringSidToSidW';
...
var
  Sid: PSID;
...
  Sid := Nil;
  ConvertStringSidToSid(LPCTSTR('S-1-1-0'), Sid);
...

蒂亚布兰科

【问题讨论】:

    标签: delphi winapi windows-7 delphi-xe3


    【解决方案1】:

    Sid 参数被输出。在你的函数原型中添加out 关键字。此外,将LPCTSTR 与该函数的Unicode 版本(带有W 后缀的那个)一起使用是不安全的。一旦您将此代码迁移到非 Unicode Delphi,您将无法调用它,因为在非 Unicode Delphi 上 LPCTSTR 变为 PAnsiChar 并且您将调用 Unicode 函数。而是直接使用PWideChar

    function ConvertStringSidToSid(StringSid: PWideChar; out Sid: PSID): BOOL; stdcall;
      external Advapi32 name 'ConvertStringSidToSidW';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-02
      • 2017-08-14
      • 2020-06-04
      • 2016-11-08
      • 1970-01-01
      • 1970-01-01
      • 2021-01-09
      相关资源
      最近更新 更多