2
我想知道如何设置Windows文件的权限?
就像chmod()
,而不是它的窗户。设置创建的文件权限
例如:
创建文件example.exe
,并在只有这个文件的所有者 可以执行它的方式设置其权限。
我看到有一个ACL API用于某处,但我并没有完全理解它。
我想知道如何设置Windows文件的权限?
就像chmod()
,而不是它的窗户。设置创建的文件权限
例如:
创建文件example.exe
,并在只有这个文件的所有者 可以执行它的方式设置其权限。
我看到有一个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;
}
http://msdn.microsoft.com/en-us/library/windows/desktop/aa446654%28v=vs.85%29.aspx – deviantfan