Propriétaire d'un fichier

flyingfish Messages postés 41 Date d'inscription jeudi 19 février 2004 Statut Membre Dernière intervention 4 août 2006 - 18 avril 2005 à 17:16
cs_dauphins14 Messages postés 60 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 24 février 2012 - 21 févr. 2012 à 15:40
Bonjour,

Je cherche comment faire pour connaître et pour modifier le propriètaire d'un fichier sous Windows (un peu comme le chgown sur un AS/400)

Quelqu'un a une idée ? Je n'arrive déjà pas à trouvé le propriétaire (propriétaire = auteur ????)

Merci pour votre aide

8 réponses

yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
19 avril 2005 à 09:13
Recherche dans le header du fichier, ça doit sûrment être dedans.

YOYO, @+.
YOYO
0
flyingfish Messages postés 41 Date d'inscription jeudi 19 février 2004 Statut Membre Dernière intervention 4 août 2006
19 avril 2005 à 11:05
J'ai trouvé les fonctions

GetFileSecurity
GetSecurityDescriptorOwner
SetSecurityDescriptorOwner

Je voudrai déjà récupérer le propriétaire actuel (c'est un début ), mais je comprend pas très bien comment cela fonctionne.

Si quelqu'un a un peu des infos là-dessus, ça me serait très utiles !!!

Merci d'avance
0
minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
19 avril 2005 à 13:29
0
flyingfish Messages postés 41 Date d'inscription jeudi 19 février 2004 Statut Membre Dernière intervention 4 août 2006
19 avril 2005 à 17:00
J'ai déjà réussi à affichier le propriétaire d'un objet !

Demain je m'attaque au changement de propriétaire

Merci déjà pour l'aide !
**********************************************************************
#define WIN32_LEAN_AND_MEAN


#include <windows.h>
#include <stdlib.h>
#include <stdio.h>


CHAR buf[1000];
DWORD dw ;


LPSTR file = "Le_Chemin_Complet_de_mon_fichier"; (ex : c:\temp\lenomdudoc.XLS)
DWORD ssd = 0;
PSECURITY_DESCRIPTOR psd = NULL;
PSID psid = NULL;
BOOL pFlag = FALSE;
DWORD saccount = 0;
LPSTR account = NULL;
DWORD sdomain = 0;
LPSTR domain = NULL;
SID_NAME_USE snu;


GetFileSecurity(file, OWNER_SECURITY_INFORMATION, NULL, 0, &ssd);


psd = GlobalAlloc(GMEM_FIXED, ssd);
GetFileSecurity(file, OWNER_SECURITY_INFORMATION, psd, ssd, &ssd);


GetSecurityDescriptorOwner(psd, &psid, &pFlag);
LookupAccountSid(NULL, psid, account, &saccount, domain, &sdomain, &snu);


account = (LPSTR)GlobalAlloc(GMEM_FIXED, saccount);
domain = (LPSTR)GlobalAlloc(GMEM_FIXED, sdomain);


LookupAccountSid(NULL, psid, account, &saccount, domain, &sdomain, &snu);


sprintf(buf,"File : [%s]\n", (LPCTSTR)&(1:).GetText());
AfxMessageBox(buf);
sprintf(buf,"Owner : [%s]\n", account);
AfxMessageBox(buf);
sprintf(buf,"Domain : [%s]\n", domain);
AfxMessageBox(buf);
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
flyingfish Messages postés 41 Date d'inscription jeudi 19 février 2004 Statut Membre Dernière intervention 4 août 2006
19 avril 2005 à 17:02
euh...

sprintf(buf,"File : [%s]\n", file);

à la place de
sprintf(buf,"File : [%s]\n", (LPCTSTR)&(1:).GetText());
0
flyingfish Messages postés 41 Date d'inscription jeudi 19 février 2004 Statut Membre Dernière intervention 4 août 2006
19 avril 2005 à 17:34
Au fait, si l'utilisateur n'a pas les droits totals sur le document, je ne pense pas qu'il puisse en changer le propriétaire.

De ce fait, existe-t-il une fonction qui permet de "switcher" l'utilistateur durant la modification du propriétaire pour se mettre en Admin ?

Merci bien et bonne soirée !
0
flyingfish Messages postés 41 Date d'inscription jeudi 19 février 2004 Statut Membre Dernière intervention 4 août 2006
20 avril 2005 à 15:25
Rebonjour,

Merci déjà pour toute l'aide fournie !

Après de maintes essais en vain, je n'arrive toujours pas à remplacer le propriétaire d'un objet.
Il me dit toujours que le format du SID n'est pas valide :


1338,
The security descriptor structure is invalid.,
ERROR_INVALID_SECURITY_DESCR

Même si je fais l'appel comme suit, il continue de me retourner l'erreur 1338. Pourtant, je ne modifie pas le SID (enfin...il me semble)

GetSecurityDescriptorOwner(MySD, &MYpsid, &pFlag);

SetSecurityDescriptorOwner(MySD, MYpsid, pFlag);
dw = GetLastError();
sprintf(buf,"LastError (%i)", dw);
AfxMessageBox(buf);

Là je suis bien perdu !!!
D'avance merci de partager vos connaissances !

/\_ /\
/ \/ \
0
cs_dauphins14 Messages postés 60 Date d'inscription samedi 8 mai 2010 Statut Membre Dernière intervention 24 février 2012
21 févr. 2012 à 15:40
Est ce que l'on peut par effectuer cette recherche pour un répertoire en le mettant dans un fichier ou dans un tableau


Dauphins14
0
Rejoignez-nous