C++ 如何在windows c+中创建类似S-1-5-21-123697389-1196883430-1112475604-1016的SID+;

C++ 如何在windows c+中创建类似S-1-5-21-123697389-1196883430-1112475604-1016的SID+;,c++,windows,sid,C++,Windows,Sid,我需要像上面那样创建SID来更改卷的所有权。我使用了AllocateAndInitializeSid()来生成未知的SID,但是在这个函数中传递什么作为子权限值 我的代码如下: SID_IDENTIFIER_AUTHORITY SIDAuthNT = SECURITY_NT_AUTHORITY; PSID pSIDUnknown = NULL; AllocateAndInitializeSid(&SIDAuthNT, 2, SECURITY_NT_NON_UNIQUE

我需要像上面那样创建SID来更改卷的所有权。我使用了
AllocateAndInitializeSid()
来生成未知的SID,但是在这个函数中传递什么作为子权限值

我的代码如下:

SID_IDENTIFIER_AUTHORITY SIDAuthNT = SECURITY_NT_AUTHORITY;
PSID pSIDUnknown = NULL;  
AllocateAndInitializeSid(&SIDAuthNT, 2,
        SECURITY_NT_NON_UNIQUE,
        DOMAIN_ALIAS_RID_ADMINS,
        0,
        0, 0, 0, 0, 0,
        &pSIDUnknown))
它生成的SID类似于
S-1-5-21-500
,但我想生成的SID类似于
S-1-5-21-123697389-1196883430-1112475604-1016

如何在Windows C++中实现?< /P> 有什么想法吗


提前感谢。

您不能只生成自己的随机SID。SID是由Windows创建的
AllocateAndInitializeSid
被记录为“分配并初始化安全标识符(SID)”,但它在
**psidunnown
处分配并初始化内存。您应该已经从其他来源获得了这些值


通常的方法是只接受用户名并使用

查找其SID。您不能只生成自己的随机SID。SID是由Windows创建的
AllocateAndInitializeSid
被记录为“分配并初始化安全标识符(SID)”,但它在
**psidunnown
处分配并初始化内存。您应该已经从其他来源获得了这些值


通常的方法是只接受一个用户名并用

查找其SID,我想以这种格式创建
S-1-5-21-xxxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxxx-RID
如果不想创建用户,然后查看相应的SID,我只想创建一个未知的SID。像任何其他防病毒软件一样,它会创建一个随机SID,并使用该SID对我们的文件和文件夹拥有所有权。不能创建它们,不能使用此格式,也不能使用其他格式。您只能查找现有实体(用户、组、计算机等)的现有SID。我希望你说“其他防病毒软件”时不是认真的。如果您正在编写防病毒软件,您应该对Windows安全性(包括SID)有深入的了解。我很确定其他的AV作者并没有创造随机的SID。如果它们是随机的,它们就不安全了,因为Windows不会理解它们。今天我安装了一个Gilisoft USB锁,当我阻止USB设备时,我检查文件夹的所有者是否正是
S-1-5-21-123697389-1196883430-1112475604-1016
。我还使用
WMIC useraccount get name,sid
WMIC group get name,sid
检查我计算机中的所有用户和所有组,但在我看到sid
S-1-5-21-123697389-1196883430-1112475604-1016的地方没有。所以我想知道这个SID是如何创建的,尽管没有用户/组与之关联。你能解释一下吗,因为我对它没有太多的了解,但我需要创建这样的SID。我想以这种格式创建
S-1-5-21-xxxxxxxxxxxxx-xxxxxxxxx-xxxxxxxxx-RID
如果不想创建用户,然后查看相应的SID,我只想创建一个未知的SID。像任何其他防病毒软件一样,它会创建一个随机SID,并使用该SID对我们的文件和文件夹拥有所有权。不能创建它们,不能使用此格式,也不能使用其他格式。您只能查找现有实体(用户、组、计算机等)的现有SID。我希望你说“其他防病毒软件”时不是认真的。如果您正在编写防病毒软件,您应该对Windows安全性(包括SID)有深入的了解。我很确定其他的AV作者并没有创造随机的SID。如果它们是随机的,它们就不安全了,因为Windows不会理解它们。今天我安装了一个Gilisoft USB锁,当我阻止USB设备时,我检查文件夹的所有者是否正是
S-1-5-21-123697389-1196883430-1112475604-1016
。我还使用
WMIC useraccount get name,sid
WMIC group get name,sid
检查我计算机中的所有用户和所有组,但在我看到sid
S-1-5-21-123697389-1196883430-1112475604-1016的地方没有。所以我想知道这个SID是如何创建的,尽管没有用户/组与之关联。你能解释一下吗,因为我对它没有太多的了解,但我需要创建这样的SID。创建任意SID结构很简单。困难的部分是创建一个自定义访问令牌,该令牌将该SID作为其启用的组之一(例如,启用SeTcbPrivilege的via)。这是自定义SID在安全对象的DACL中有意义的唯一方法。创建任意SID结构非常简单。困难的部分是创建一个自定义访问令牌,该令牌将该SID作为其启用的组之一(例如,启用SeTcbPrivilege的via)。这是自定义SID在安全对象的DACL中有意义的唯一方法。