在共享文件夹上恢复有效权利的问题
Problem to recover effective rights on a shared folder
我想在共享文件夹上恢复有效的权利。为此,我使用了CreateFile,GeteCurityInfo和Geteffectiverightsfromacla的方法。问题在于,当我测试权利时,它在设置管理员的SID时不起作用。这是否来自我代码的不良实现?我指定我有文件的权利。
//stringName is the file path
HANDLE file = CreateFile(stringName.c_str(), GENERIC_READ,
FILE_SHARE_READ,
nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr);
PSID pSid;
//The SID is that of the administrator
ConvertStringSidToSidA(stringSid.c_str(), &pSid);
PACL ppDacl;
PSECURITY_DESCRIPTOR ppSecurityDescriptor;
GetSecurityInfo(file, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, nullptr,
&pSid, &ppDacl, nullptr, &ppSecurityDescriptor);
ACCESS_MASK pAccesMask;
TRUSTEE_A pTrustee;
GetEffectiveRightsFromAclA(ppDacl, &pTrustee, &pAccesMask);
//here conditions are not respected
if((pAccesMask & GENERIC_READ) == GENERIC_READ)
{
std::cout<<"ok"<<std::endl;
}
if((pAccesMask & GENERIC_WRITE) == GENERIC_WRITE)
{
std::cout<<"ok"<<std::endl;
}
if((pAccesMask & GENERIC_EXECUTE) == GENERIC_EXECUTE)
{
std::cout<<"ok"<<std::endl;
}
if((pAccesMask & GENERIC_ALL) == GENERIC_ALL)
{
std::cout<<"ok"<<std::endl;
}
在使用pAccesMask
值之前,请确保GetEffectiveRightsFromAclA
函数返回error_success。
并且因为Windows文件对象将generic_read位映射到read_control并同步标准访问权限。因此,请更改条件检查逻辑的generic_read这样的逻辑:
if ((pAccesMask & READ_CONTROL) == READ_CONTROL && (pAccesMask & SYNCHRONIZE) == SYNCHRONIZE) //GENERIC_READ
{
std::cout << "GENERIC_READ" << std::endl;
}
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 有效地将大数存储为 2 的幂用于路径问题
- 关于读取有效 c++ 第 4 项(将非局部静态变量替换为局部静态变量)的问题
- 如何解决数独问题,以便通过交换任何两个相邻的子网格,我仍然得到有效的答案?
- 在共享文件夹上恢复有效权利的问题
- 有效的问题 - 关于本地变量和全局变量,必须是基本的C/C 问题
- 将一个STL向量有效地分配给另一个STL矢量(WSL问题)
- 我如何让我的部分代码循环并重复一个问题,直到答案是有效的输入C++
- libcurl 中的有效负载文本遇到问题
- 函数指针问题.如何有效地与C API接口(即.GSL)来自C++类
- 指针和类有问题。两个相同的类,其中一个有效,一个无效
- 检查有效的 CIN 输入时出现问题
- 在C++中将字符串转换为带完整有效数字的浮点值[修复了在开发人员C++中工作的问题]
- 问题创建者:找不到有效的试剂盒
- 递归是一件坏事吗?在递归似乎最有用的地方,是否有更清晰或更有效的方法来解决问题?
- SDL和zlib问题,不能从zip创建有效的组结构
- 这是解决mixin构造函数问题的有效方法吗