- 因需求需要使用类似功能从而参考网上其它类似功能改了一下
#include<Windows.h>
#include<iostream>
#include<WinBase.h>
#include<AccCtrl.h>
#include<AclAPI.h>
#pragma comment(lib,"Kernel32.lib")
int EnableFilaAccountPrivilege(const char path[], PCTSTR accountName) {
BOOL bSuccess = TRUE;
EXPLICIT_ACCESS aces{};
PACL pACL = NULL;
do {
::BuildExplicitAccessWithName(
&aces,
(LPTSTR)accountName,
GENERIC_EXECUTE| GENERIC_READ,
GRANT_ACCESS,
SUB_CONTAINERS_AND_OBJECTS_INHERIT);
if (ERROR_SUCCESS != ::SetEntriesInAcl(
1,&aces,
NULL,&pACL)) {
bSuccess = FALSE;
break;
}
if (ERROR_SUCCESS != ::SetNamedSecurityInfo(
(LPTSTR)path,
SE_FILE_OBJECT,
DACL_SECURITY_INFORMATION,
NULL, NULL, pACL, NULL)){
bSuccess = FALSE;
}
} while (FALSE);
if (NULL != pACL) {
::LocalFree(pACL);
}
return bSuccess;
}
int main() {
CHAR strBuffer[256]{};
DWORD dwSize = 256;
GetUserName(strBuffer, &dwSize);
const char path[MAX_PATH] = "D:";
const char accName[MAX_PATH] = "Everyone";
if (!EnableFilaAccountPrivilege(path, accName)) {
std::cout << "更改文件帐户权限失败" << std::endl;
}
return 0;
}