gpt4 book ai didi

c - 设置创建的文件权限

转载 作者:行者123 更新时间:2023-12-02 04:39:17 24 4
gpt4 key购买 nike

我想知道如何设置windows文件的权限?
类似 chmod() 的东西,而不是一个窗口。

例如:

创建文件example.exe,并以只有所有者的方式设置它的权限该文件的一部分可以执行它。

我读到某处有一个用于 c 的 ACL API,但我不太明白。

最佳答案

它比 chmod 多了很多工作!

我冒昧地在创建安全描述符后创建文件 - 这样更安全。如果您以相反的方式做事(先创建文件),那么会在短时间内未设置所需的访问权限。

试试这个:

#include <windows.h>
#include <AclAPI.h>
#include <Lmcons.h>

int main()
{
SECURITY_DESCRIPTOR sd;
EXPLICIT_ACCESS ea[1];
PACL pDacl;
SECURITY_ATTRIBUTES sa;

TCHAR UserBuffer[UNLEN+1];
DWORD ulen = UNLEN;
GetUserName(UserBuffer, &ulen);

InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION);

BuildExplicitAccessWithName(&ea[0], UserBuffer, GENERIC_EXECUTE,
SET_ACCESS, NO_INHERITANCE);

SetEntriesInAcl(1, ea, NULL, &pDacl);
SetSecurityDescriptorDacl(&sd, TRUE, pDacl, FALSE);

sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = FALSE;
sa.lpSecurityDescriptor = &sd;

CreateFileA("c:\\temp\\example.exe", GENERIC_EXECUTE, 0, &sa,
CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);

return 0;
}

关于c - 设置创建的文件权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21253728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com