J'ai un problème et j'espère que quelqu'un là-bas peut me donner des conseils! En gros, dans mon programme, je vais prendre un dossier de fenêtres, changer la propriété, configuration de l'accès des règles de contrôle etc, pour ce son joli Java de vanille en utilisant:Restaurer l'héritage d'un répertoire Windows via Java en utilisant JNA
Files.getFileAttributeView(target, AclFileAttributeView.class);
Le problème se pose quand je veux oublier un répertoire, et pour ce faire, je veux réactiver l'héritage du répertoire parent et supprimer toutes mes règles ACL. Je peux supprimer les règles et définir le propriétaire à nouveau en Java mais il semble que je dois aller natif de mettre le drapeau de l'héritage ...
Je pense que je peux obtenir un pointeur vers le descripteur de sécurité comme celui-ci:
Advapi32 advapi32 = Advapi32.INSTANCE;
PointerByReference ppsidOwner = new PointerByReference();
PointerByReference ppsidGroup = new PointerByReference();
PointerByReference ppDacl = new PointerByReference();
PointerByReference ppSacl = new PointerByReference();
PointerByReference ppSecurityDescriptor = new PointerByReference();
int reqSecurityInfo = Advapi32.OWNER_SECURITY_INFORMATION |
Advapi32.DACL_SECURITY_INFORMATION |
Advapi32.SACL_SECURITY_INFORMATION |
Advapi32.GROUP_SECURITY_INFORMATION;
int ret = advapi32.GetNamedSecurityInfo("c:\\\\testpaths", Advapi32.SE_FILE_OBJECT,
reqSecurityInfo, ppsidOwner, ppsidGroup, ppDacl, ppSacl, ppSecurityDescriptor);
if(ret != 0){
throw new Win32Exception(ret);
}
Où Advapi32.java contient: Advapi32 INSTANCE = (Advapi32) Native.loadLibrary("Advapi32", Advapi32.class, W32APIOptions.UNICODE_OPTIONS);
Mais je suis vraiment patauge un peu ici, je suis sur la bonne voie ou suis-je un idiot? C'est un terrain inconnu pour moi, s'il vous plaît aidez-moi!
Remarque: il est parfaitement possible d'utiliser des barres obliques en tant que séparateurs de chemin de fichier sur les fenêtres, ce qui facilite la lecture des chaînes. – technomage
Avez-vous réellement essayé cela? Quels ont été les résultats? – technomage
Oui, j'ai essayé cela, je reçois des pointeurs mis à jour dans le ppsidOwner etc mais je me suis perdu alors en essayant de les convertir en l'objet de sécurité qui appartient à WinNT.dll. J'essaye d'exemple l'interface de WinNT.dll et échoue parce qu'il ne peut pas trouver la DLL réelle, cependant si je copie la méthode du WinNT.dll j'obtiens une exception de tableau non instanciée. Fondamentalement, je pense que je me trompe et j'espérais que quelqu'un avec l'expérience de la JNA pourrait me diriger dans la bonne direction? – GavinF