I’m maintaining a software developed using J2SE, (but i’m c# developer actually not have big experience in Java). This software uses access as datastore, this access database is stored on db folder. When the user install this application from “Standard User”, not administrator, in Windows 7 or Vista, he cannot get permission on db folder. To make the software run, we need to add “Modify” permission for the current user (which is Standard User).
Actually I searched to how to do that using Java, but found nothing, but i found little resources, but not enough. The question is “How can I grant ‘Modify’ Permission to the current logged user, in either c++ (old c++ not .net) or using Java)?
Function presented in MSDN article “Modifying the ACLs of an Object in C++” does the job. GetNamedSecurityInfo retrieves discretionary access control list (DACL) for the object (directory in your case). SetEntriesInAcl creates new access control list (ACL) by merging new entries (including permissions) with existing ones. SetNamedSecurityInfo assigns modified DACL back to the object.
Regarding that Modify permission is a combination of following rights: FILE_GENERIC_READ | FILE_GENERIC_WRITE | FILE_GENERIC_EXECUTE | DELETE you can call this function like here: