Windows 中是否有类似于 Linux 的 chown 的 API?
Is there an API in Windows similar to Linux's chown?
取自此处: http://www.perlmonks.org/?node_id=70562
// #includes omitted for the sake of sanity HANDLE token; char *filename = "somefile.txt"; char *newuser = "someuser"; DWORD len; PSECURITY_DESCRIPTOR security = NULL; PSID sidPtr = NULL; int retValue = 1; // Get the privileges you need if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &token)) { SetPrivilege(token, "SeTakeOwnershipPrivilege", 1); SetPrivilege(token, "SeSecurityPrivilege", 1); SetPrivilege(token, "SeBackupPrivilege", 1); SetPrivilege(token, "SeRestorePrivilege", 1); } else retValue = 0; // Create the security descriptor if (retValue) { GetFileSecurity(filename, OWNER_SECURITY_INFORMATION, security, 0, &len); security = (PSECURITY_DESCRIPTOR)malloc(len); if (!InitializeSecurityDescriptor(security, SECURITY_DESCRIPTOR_REVISION)) retValue = 0; } // Get the sid for the username if (retValue) { char domainbuf[4096]; DWORD sidSize = 0; DWORD bufSize = 4096; SID_NAME_USE sidUse; LookupAccountName(NULL, newuser, sidPtr, &sidSize, domainbuf, &bufSize, &sidUse); sid = (PSID)malloc(sidSize); if (!LookupAccountName(NULL, string, (PSID)sid, &sidSize, domainbuf, &bufSize, &sidUse)) retValue = 0; } } // Set the sid to be the new owner if (retValue && !SetSecurityDescriptorOwner(security, sidPtr, 0)) retValue = 0; // Save the security descriptor if (retValue) retValue = SetFileSecurity(filename, OWNER_SECURITY_INFORMATION, security); if (security) free(security); if (sid) free(sid); return retValue;
`
Taken from here: http://www.perlmonks.org/?node_id=70562
您可能会发现 cacls 或 icacls 命令 很有用...它们使用起来并不简单不过
你能提供更多关于你想要做什么的信息吗?
You might find the cacls or icacls commands useful... They're not exactly straightforward to use though
Can you provide a bit more information on what you're trying to do?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(2)
取自此处: http://www.perlmonks.org/?node_id=70562
`
Taken from here: http://www.perlmonks.org/?node_id=70562
`
您可能会发现 cacls 或 icacls 命令 很有用...它们使用起来并不简单不过
你能提供更多关于你想要做什么的信息吗?
You might find the cacls or icacls commands useful... They're not exactly straightforward to use though
Can you provide a bit more information on what you're trying to do?