Accueil > Forum > > > > Protection d'un fichier
Protection d'un fichier
mercredi 9 novembre 2005 à 10:14:01 |
Protection d'un fichier

mammnon
|
Bonjour à tous. Petite question qui va probablement en faire rire plus d'un: Comment bloquer completement l'acces à un fichier?, voir à un dossier? Pour l'instant j'ai un programme (en fait un service mais bon...) qui ouvre un handle vers le fichier a proteger et le referme pas. HANDLE fichier= CreateFile ( "c:\\mon_fichier.txt", MAXIMUM_ALLOWED | GENERIC_READ | GENERIC_WRITE, 0, 0,OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN | FILE_ATTRIBUTE_SYSTEM, NULL ); De cette manière il s'avere impossible de le supprimer (tant que mon prg tourne)! Oui mais j'ai l'esprit tordu et j'ai fais quelques test et là oh! surprise! il est possible de RENOMMER le fichier! Du coup au prochain demarrage mon service ne pourra pas ouvrir le handle vers le fichier et je l'ai dans **********! J'ai déjà fait ca: SetFileAttributes("c:\\mon_fichier.txt",FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_READONLY ); donc maintenant ca complique encore plus la chose mais il est toujours possible de supprimer mon satané fichier! Si quelqu'un a une idée de génie, ca serrais cool de la partager....même une idée tout court serrait la bienvenue... Tom@
|
|
mercredi 9 novembre 2005 à 10:38:23 |
Re : Protection d'un fichier

BruNews
|
Ton HANDLE fichier est surement invalide. J'ai testé: int WINAPI WinMain(HINSTANCE h, HINSTANCE x, LPSTR ystr, int z) { HANDLE hfl = CreateFile("d:\\aaa.txt", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_ALWAYS, 0, 0); if(hfl == INVALID_HANDLE_VALUE) return 0; MessageBox(0, "OK", "R", 0); CloseHandle(hfl); return 0; } Tant que MessageBox est affichée il est tout à fait impossible de renommer, éditer ou supprimer le fichier. ciao... [ Lien ]BruNews, MVP VC++
|
|
mercredi 9 novembre 2005 à 11:04:33 |
Re : Protection d'un fichier

mammnon
|
LOL, j'ai pas pensé à verifier que mon handle est bon...je verifie et je tiens au courant
thomas
|
|
mercredi 9 novembre 2005 à 11:10:06 |
Re : Protection d'un fichier

mammnon
|
Bon mauvaise nouvelle....  Mon Handle est bon et je peux toujours renommer le fichier MAIS BruNews tu n'avais pas tort: effectivement ouvrir le handle empeche de le renommer quand c'est un prg standard. Le problème vient donc du fait que le handle est ouvert a partir d'un service et non d'un executable classique... Tom@
|
|
mercredi 9 novembre 2005 à 11:38:14 |
Re : Protection d'un fichier

BruNews
|
C'est certain, à partir d'un service il est ouvert dans un autre 'contexte' et la session en cours n'a pas eu la restriction d'accès. Vérifie si ton service est 'system' ou 'local'. ciao... [ Lien ]BruNews, MVP VC++
|
|
mercredi 9 novembre 2005 à 11:51:23 |
On avance, on avance....on a plus assez d'essence...

mammnon
|
Je me moque pas mais à la question de savoir si mon service est "system" ou "local" je reponds qu'il est noté comme "Système local" dans le gestionnaire de service...dsl Voilà comment je l'ai créé: SC_HANDLE schService = CreateService(schSCManager,NOM1,NOM2, SERVICE_ALL_ACCESS, // Type d'acces SERVICE_WIN32_OWN_PROCESS, // Type de service SERVICE_AUTO_START, // Pour le demarrage automatique SERVICE_ERROR_NORMAL, // error control type lpszBinaryPathName, // service's binary NULL, // no load ordering group NULL, // no tag identifier NULL, // no dependencies NULL, // Si null demarrer en tant que compte system NULL); // Mot de passe : null si demarrer en tant que system Voilà, autant vous dire que j'ai pas ré-inventer la roue donc si quelqu'un trouve que ca ressemble a son code c plus que possible... Bon alors j'ai posé une colle? La question de protection d'un fichier est devenue: Comment un service peux-t-il ouvrir un handle en mode exclusif avec tous les utilisateurs? Tom@
|
|
mercredi 9 novembre 2005 à 12:06:44 |
Re : Protection d'un fichier

BruNews
|
désolé c'était 'local system' ou 'local service'. Je m'occupe de ton problème dès que possible. ciao... [ Lien ]BruNews, MVP VC++
|
|
jeudi 10 novembre 2005 à 13:01:27 |
Re : Protection d'un fichier

BruNews
|
Réponse acceptée !
As-tu essayé de mettre un DACL pour restreindre l'accès ? Regarde ici si ça peut t'aider: [ Lien ]ciao... [ Lien ]BruNews, MVP VC++
|
|
lundi 14 novembre 2005 à 14:40:42 |
Re : Protection d'un fichier

mammnon
|
Merci BruNews de m'avoir mis sur la voie... Bon alors comme ca ca fonctionne mais il y a encore des choses bizarres. Par exemple si le prg creer le fichier les droits sont correctement placés. Sinon, sur un fichier dejà existant, ca ne fait que empecher reelement son ouverture, sa destruction, et son renommage... Bon bah pour ceux que ca interesse voici un bout de code, condensé de tout ce que j'ai trouvé sur le sujet, qui permet de vraiment interdire un fichier: (dsl pour les commentaires) SECURITY_ATTRIBUTES sa; SECURITY_DESCRIPTOR SD; PACL pACL = NULL; EXPLICIT_ACCESS ea[2]; SID_IDENTIFIER_AUTHORITY SIDAuthWorld = SECURITY_WORLD_SID_AUTHORITY; SID_IDENTIFIER_AUTHORITY SIDAuthNT = SECURITY_NT_AUTHORITY; PSID pEveryoneSID = NULL, pAdminSID = NULL; sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.bInheritHandle = FALSE; BOOL bInitOk = InitializeSecurityDescriptor( &SD,SECURITY_DESCRIPTOR_REVISION ); if ( bInitOk ){ // give the security descriptor a Null Dacl // done using the "TRUE, (PACL)NULL" here if(AllocateAndInitializeSid(&SIDAuthWorld, 1,SECURITY_WORLD_RID,0, 0, 0, 0, 0, 0, 0,&pEveryoneSID)){ // Initialize an EXPLICIT_ACCESS structure for an ACE. // The ACE will allow Everyone read access to the key. ZeroMemory(&ea, 2 * sizeof(EXPLICIT_ACCESS)); ea[0].grfAccessPermissions = KEY_READ; ea[0].grfAccessMode = SET_ACCESS; ea[0].grfInheritance= NO_INHERITANCE; ea[0].Trustee.TrusteeForm = TRUSTEE_IS_SID; ea[0].Trustee.TrusteeType = TRUSTEE_IS_WELL_KNOWN_GROUP; ea[0].Trustee.ptstrName = (LPTSTR) pEveryoneSID; if(AllocateAndInitializeSid(&SIDAuthNT, 2,SECURITY_BUILTIN_DOMAIN_RID,DOMAIN_ALIAS_RID_ADMINS,0, 0, 0, 0, 0, 0,&pAdminSID)){ // Initialize an EXPLICIT_ACCESS structure for an ACE. // The ACE will allow the Administrators group full access to the key. ea[1].grfAccessPermissions = KEY_ALL_ACCESS; ea[1].grfAccessMode = SET_ACCESS; ea[1].grfInheritance= NO_INHERITANCE; ea[1].Trustee.TrusteeForm = TRUSTEE_IS_SID; ea[1].Trustee.TrusteeType = TRUSTEE_IS_GROUP; ea[1].Trustee.ptstrName = (LPTSTR) pAdminSID; if(ERROR_SUCCESS == SetEntriesInAcl(2, ea, NULL, &pACL)){ BOOL bSetOk = SetSecurityDescriptorDacl( &SD,TRUE,pACL,FALSE ); if ( bSetOk ){ // Make the security attributes point // to the security descriptor sa.lpSecurityDescriptor = &SD; protection = CreateFile ( "c:\\lcc\\projects\\executable.exe",MAXIMUM_ALLOWED | GENERIC_READ, 0, &sa,OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN | FILE_ATTRIBUTE_SYSTEM, NULL ); // Free the memory allocated for the SECURITY_DESCRIPTOR. LocalFree(sa.lpSecurityDescriptor); } } } } } Mammnon
|
|
Cette discussion est classée dans : fichier, file, handle, protection, attribute
Répondre à ce message
Sujets en rapport avec ce message
ouverture de fichier avec les MFC [ par steph76 ]
Bonjourvoila je programme une application qui ha beusoin d'ouvrir 1 fichier via httpJ'ai donc fait le code suivantCStdioFile *file;CInternetSession IS
Problème avec traitement de fichier (cplusplus !) [ par Sianrin ]
Voila, j'explique mon problème. Pour voir un peu comment les accès au fichiers se géraient en cplusplus, je me suis mis en tête de faire un programme
Enregistrer en HEXA un texte avec gcc !! [ par UncleShu ]
/* * Ce programme affiche le fichier en HEXADECIMAL et se copie lui-même avec * une autre exetenstion (.txt). Moi je voudrais qui affiche le fichier *
Petit probleme de code en C sur Linux !! [ par UncleShu ]
Je voudrais créer un fichier dans le réperoire personnel d'un utilisateur mais mon code ne marche pas !!#include #include #include #define DIR $HOM
Mettre un fichier .exe dans un buffer [ par guiguikun ]
Je n'arrive pas a mettre un fichier executable en memoire.sur les 100Ko du fichier, mon buffer ne compte que les 3 premiers octets (caracteres)voici m
[C] Transfert de fichier par sockets [ par bonobo78 ]
salut ! j'ai un petit pb pour transmettre un fichier via des sockets.En fait, je decoupe le fichier en petit bout de 1024 octets et je transmets chaqu
prob avec nom de fichier. [ par kach23 ]
bonjour, je debute etje réalise une acquisition de mesure avec builder.je souhaite que le nom du fichier ouvert a chaque acquisition soit different.vo
GROS problème avec ' tellg() ' [ par Sanke ]
Bonjour à tous, je poste ce message parce que je ne comprends pas ce qui se passe avec tellg() :je m'explique, je lis un fichier ligne à ligne dont vo
Pb de gestion de fichier avec fstream [ par Bub325 ]
Salut,J'ai deux problème distinct avec fstream, Le premier est que lorsque j'arrive à la fin d'un fichier, je ne peut plus revenir plus haut dans ce d
lire un fichier [ par Toobad ]
J'utilise GetFileSize pour me renvoyer la taille du fichier précédemment ouvert et ensuite j'appelle ReadFile en lui passant la valeur DWORD comme nbr
Livres en rapport
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Forum
ALGORITHMESALGORITHMES par whayoub
Cliquez pour lire la suite par whayoub
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|