Probleme CreateFile à l'ouverture du disque C: sous vista

ksoft_cppfrance Messages postés 5 Date d'inscription jeudi 8 juin 2006 Statut Membre Dernière intervention 25 mars 2009 - 25 mars 2009 à 10:58
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 25 mars 2009 à 15:51
En fait je suis en train de developper une application qui permet de lire et ecrire sur le disque. Pour cela, j'utilise les fonctions CreateFile, ReadFile et WriteFile.

Sous XP cela marche tres bien. Mais sous Vista en mode User (avec le UAC activé) la fonction CreateFile me renvoie INVALID_HANDLE_VALUE et la fonction GetLastError me renvoie ERROR_ACCESS_DENIED.

Je sais qu'il y a des restrictions au niveau de Vista mais d'aprés MSDN cela concerne que l'ecriture sur le disque alors que moi j'arrive meme pas à ouvrir le disque C:

Voila la ligne de code que j'utilise pour l'ouverture de mon disque :

_HandleDuVolume = CreateFile("\\\\.\\C:",   GENERIC_READ|GENERIC_WRITE,       FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_SYSTEM|
FILE_FLAG_NO_BUFFERING|FILE_FLAG_WRITE_THROUGH|
FILE_FLAG_OPEN_REPARSE_POINT
, NULL);

S'il vous plait il y a quelqu'un qui peut m'aider à regler ce probleme ?

J'attend votre reponse avec impatience.

Ksoft

7 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 mars 2009 à 14:03
Si UAC désactivé c'est idem, passe pour admin mais pas pour user ordinaire.

ciao...
BruNews, MVP VC++
0
ksoft_cppfrance Messages postés 5 Date d'inscription jeudi 8 juin 2006 Statut Membre Dernière intervention 25 mars 2009
25 mars 2009 à 14:26
Bonjour,

Mais mon application doit marcher dans le cas ou UAC est activé.

Et puisque mon UAC est activée, alors mon CreateFile est bloqué.

Ksoft
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 mars 2009 à 15:00
Ben non, ce type de prog ne tournera plus sur Vista et supérieur (server 2008, Win7 etc.).
Autre qu'un admin, personne ne doit toucher au C:, il faut revoir la conception du prog (par exemple déléguer la tache à un service system).

ciao...
BruNews, MVP VC++
0
ksoft_cppfrance Messages postés 5 Date d'inscription jeudi 8 juin 2006 Statut Membre Dernière intervention 25 mars 2009
25 mars 2009 à 15:15
Comment delegué ca à une tache systeme ?

J'ai pas compris ce que vous dites ?
0

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

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 mars 2009 à 15:34
Un service system a les droits nécessaires pour ouvrir un handle sur disque ou partition.

ciao...
BruNews, MVP VC++
0
ksoft_cppfrance Messages postés 5 Date d'inscription jeudi 8 juin 2006 Statut Membre Dernière intervention 25 mars 2009
25 mars 2009 à 15:40
Mais comment je pourrai faire ca ?

Pouvez vous me donner un exemple ?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
25 mars 2009 à 15:51
Il doit y avoir exemples de services en sources sur cppfrance, je n'ai absolument pas le temps d'en écrire un autre spécifique à ton cas.
Je te donne une piste à suivre (Sql Server et autres gros progs l'utilisent) mais il faut prendre en compte que c'est un gros boulot qui doit donc trouver sa justification car je rappelle qu'en usage normal un user ordinaire ne doit jamais accéder en direct aux partitions.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous