win7普通用户下修改文件夹权限
番茄系统家园 · 2021-08-23 23:17:16

做应用软件开发一些配置信息经常写在安装目录下的ini文件中但最近遇到个问题是在普通用户下无法保存修改的配置信息原因是用户无权写安装目录下的ini文件。然后就有了这个想法修改本软件的文件夹权限这样在任何用户下都可以正常保存配置信息。PS个人不太同意此做法只是为了解决客户需求。
代码如下
(,){;,;;//获取文件(夹)安全对象的DACL列表if(!((LPTSTR)pszPath,SE_FILE_OBJECT,DACL_SECURITY_INFORMATION,NULL,NULL,pOldDacl,NULL,NULL)){bSuccessFALSE;returnbSuccess;}//此处不可直接用AddAccessAllowedAce函数,因为已有的DACL长度是固定,必须重新创建一个DACL对象//生成指定用户帐户的访问控制信息(这里指定赋予全部的访问权限)ZeroMemory(ea,sizeof(EXPLICIT_ACCESS));::BuildExplicitAccessWithName(ea,(LPTSTR)pszAccount,GENERIC_ALL,SET_ACCESS,SUB_CONTAINERS_AND_OBJECTS_INHERIT);//创建新的ACL对象(合并已有的ACL对象和刚生成的用户帐户访问控制信息)if(ERROR_SUCCESS!::SetEntriesInAcl(1,ea,pOldDacl,pNewDacl)){bSuccessFALSE;returnbSuccess;}ACL*saclDWORDlenSacl;PSIDworldSidNULL;lenSaclsizeof(ACL)sizeof(ACCESS_ALLOWED_ACE)sizeof(SID)-sizeof(DWORD);sacl(ACL*)malloc(lenSacl);InitializeAcl(sacl,lenSacl,ACL_REVISION);AddAuditAccessAce(sacl,ACL_REVISION_DS,GENERIC_ALL,worldSid,TRUE,TRUE);if(ERROR_SUCCESS!SetNamedSecurityInfo(pszPath,SE_FILE_OBJECT,DACL_SECURITY_INFORMATION,0,0,pNewDacl,sacl)){bSuccessFALSE;}//释放资源if(pNewDacl!NULL)::LocalFree(pNewDacl);if(sacl){::LocalFree(sacl);}returnbSuccess;}
免责声明: 凡标注转载/编译字样内容并非本站原创,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如果你觉得本文好,欢迎推荐给朋友阅读;本文链接: https://m.nndssk.com/post/45455.html。
