Obtenir le propriétaire d'un fichier (gcc;win32;ntfs)

Description

Ce programme illustre l'emploi de l'API relative à la sécurité sous Windows NT, en C. Il permet d'obtenir le login et le domaine du propriétaire d'un fichier passé en argument.

Source / Exemple :


#define WIN32_LEAN_AND_MEAN

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

INT main(INT argc, LPSTR argv[]) {
  LPSTR file = "toto";
  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;
  if (argc > 1) file = argv[1];
  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 = GlobalAlloc(GMEM_FIXED, saccount);
  domain = GlobalAlloc(GMEM_FIXED, sdomain);
  LookupAccountSid(NULL, psid, account, &saccount, domain, &sdomain, &snu);
  printf("File : [%s]\n", file);
  printf("Owner : [%s]\n", account);
  printf("Domain : [%s]\n", domain);
  GlobalFree(psd);
  GlobalFree(account);
  GlobalFree(domain);
  return EXIT_SUCCESS;
}

Conclusion :


Pour simplifier, je n'ai inclus aucun contrôle d'erreur.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.