我正在维护一个使用 J2SE 开发的软件,(但我是 C# 开发人员,实际上在 Java 方面经验不足)。该软件使用访问作为数据存储,此访问数据库存储在 db 文件夹中。当用户从 Windows 7 或 Vista 中的“标准用户”而非管理员安装此应用程序时,他无法获得对 db 文件夹的权限。为了使软件运行起来,我们需要为当前用户(标准用户)添加“修改”权限。
实际上,我搜索了如何使用 Java 来做到这一点,但一无所获,而且我找到的资源很少,但还不够。问题是 “我如何在 c++(旧 c++ 而不是 .net)或使用 Java 中向当前登录的用户授予‘修改’权限?
最佳答案
MSDN 文章 "Modifying the ACLs of an Object in C++" 中介绍的函数完成工作。 GetNamedSecurityInfo检索对象(在您的情况下为目录)的自由访问控制列表 (DACL)。 SetEntriesInAcl通过将新条目(包括权限)与现有条目合并来创建新的访问控制列表 (ACL)。 SetNamedSecurityInfo将修改后的 DACL 分配回对象。
关于修改权限是以下权限的组合:FILE_GENERIC_READ | FILE_GENERIC_WRITE |文件_通用_执行 | DELETE 你可以像这里一样调用这个函数:
std::string strFullPath("C:\test");
DWORD dwRes = AddAceToObjectsSecurityDescriptor(
const_cast<LPTSTR>(strFullPath.c_str()),
SE_FILE_OBJECT,
"StandardUser",
TRUSTEE_IS_NAME,
FILE_GENERIC_READ | FILE_GENERIC_WRITE | FILE_GENERIC_EXECUTE | DELETE,
GRANT_ACCESS,
NO_INHERITANCE);
关于java - 使用纯 C++ 或 Java 设置文件夹权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8149407/