Comment ajouter (par un code) un groupe dans l'onglet Sécurité d'un dossier ?

cs_leprintemp Messages postés 6 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 9 mars 2012 - 22 févr. 2012 à 20:31
cs_leprintemp Messages postés 6 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 9 mars 2012 - 22 févr. 2012 à 20:31
comme l'intitulé indique... j'aimerai bien créer un programme en delphi pour ajouter un groupe (exp: Tout le monde) dans la liste de sécurité d'un dossier pour lui donner des autorisations aprés.

le code suivant partage un dossier avec un controle total mais seulement pour l'utilisateur actuel:

type
_SHARE_INFO_2 = record
shi2_netname: LPWSTR;
shi2_type: DWORD;
shi2_remark: LPWSTR;
shi2_permissions: DWORD;
shi2_max_uses: DWORD;
shi2_current_uses: DWORD;
shi2_path: LPWSTR;
shi2_passwd: LPWSTR;
end;
PSHARE_INFO_2= ^_SHARE_INFO_2;

TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;

var
Form1: TForm1;
Share: PSHARE_INFO_2;
ParamErr: lpdword;
Rep : longint;

const
STYPE_DISKTREE = 0;
STYPE_PRINTQ = 1;
STYPE_DEVICE = 2;
STYPE_IPC = 3;
STYPE_DFS = 100;
STYPE_SPECIAL = $80000000;

ACCESS_NONE = 0;
ACCESS_READ = 1;
ACCESS_WRITE = 2;
ACCESS_CREATE = 4;
ACCESS_EXEC = 8;
ACCESS_DELETE = 16;
ACCESS_ATRIB = 32;
ACCESS_PERM = 64;
ACCESS_ALL = (ACCESS_READ+ACCESS_WRITE+ACCESS_CREATE+ACCESS_EXEC+ACCESS_DELETE+ACCESS_ATRIB+ACCESS_PERM);


implementation

{$R *.dfm}

function NetShareAdd(servername: LPWSTR;
level: DWORD;
buf: pSHARE_INFO_2;
parm_err: LPDWORD):LongWord; stdcall; external 'netapi32.dll';

function NetShareDel(servername: LPWSTR;
netname : LPWSTR;
reserved : DWORD):LongWord; stdcall; external 'netapi32.dll';

procedure TForm1.Button1Click(Sender: TObject);
begin
new(share);
Share^.shi2_netname := 'TESTSHARE'; //nom de partage du dossier
Share^.shi2_type := STYPE_DISKTREE; // disk drive
Share^.shi2_remark := 'TESTSHARE to test NetShareAdd'; // zone commentaire
Share^.shi2_permissions := ACCESS_ALL; //definition des droits
Share^.shi2_max_uses := 4; // nb max de users simultane
Share^.shi2_current_uses := 0;
Share^.shi2_path := 'C:\essai'; //ici le chemin du dossier a partager
Share^.shi2_passwd := Nil; // nil si pas password

rep := NetShareAdd(nil, 2, SHARE, ParamErr);
if rep = 0 then
messagedlg('OK Dossier partagé',mtInformation,[mbOK], 0)
else
messagedlg(inttostr(rep) + ' - ' +SysErrorMessage(rep),mtWarning, [mbOK], 0);
dispose(share);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
i : integer;
begin
i := 0;
rep := NetShareDel(nil, 'TESTSHARE', 0);
if rep = 0 then
messagedlg('OK Dossier départagé',mtInformation,[mbOK], 0)
else
messagedlg(inttostr(rep) + ' - ' +SysErrorMessage(rep),mtWarning, [mbOK], 0);
end;
end.


Merci pour vos aides.
Rejoignez-nous