Page 1 sur 1

Droit d'écriture

Publié : jeu. 30/août/2012 9:49
par microdevweb
Bonjour,

J'aimerais créer et écrire dans un fichier dans le répertoire système de Windows (le but une clé de protection) il semblerais cependant que cela ne fonctionne pas (à mon avis une question de droit). Existe t'il une méthode pour avoir les droit suffisant.

Merci d'avance

Code : Tout sélectionner

*DIR=AllocateMemory(100)
If GetSystemDirectory_(*DIR,100)
  File$=PeekS(*DIR,100)+"\Lomd.mcd"
  If Not OpenFile(0,File$)
    If CreateFile(0,File$)
      OpenFile(0,File$)
      WriteString(0,"Teste")
      CloseFile(0)
    Else
      Debug "zut"
    EndIf
  EndIf
Else
  Debug "Erreur sur l'api"
EndIf


Re: Droit d'écriture

Publié : jeu. 30/août/2012 10:35
par Droopy
Deux méthodes :
1) Se logguer en administrateur
2) Modifier les droits NTFS

Re: Droit d'écriture

Publié : jeu. 30/août/2012 10:38
par microdevweb
Merci pour ta réponse,
Mais cela doit se faire à l’insu de l'utilisateur donc...
Avec d'autre langage (windev par exemple) cela fonctionnait, je regarder du côté de l'api createfile_

Merci quand même

Re: Droit d'écriture

Publié : jeu. 30/août/2012 10:52
par kernadec
bonjour
avec un dossier ça fonctionne :mrgreen:

Cordialement

Code : Tout sélectionner

*DIR=AllocateMemory(100)
dossier$="je cache mon code ici"
If GetSystemDirectory_(*DIR,100)
  If ExamineDirectory(0, PeekS(*DIR,100)+"\", dossier$)  
    If IsDirectory(0)
      CreateDirectory(PeekS(*DIR,100)+"\"+dossier$) 
    EndIf
  EndIf
  File$=PeekS(*DIR,100)+"\"+dossier$+"\Lomd.mcd"
  If Not OpenFile(0,File$)
    If CreateFile(0,File$)
      OpenFile(0,File$)
      WriteString(0,"Teste")
      CloseFile(0)
    Else
      Debug "zut"
    EndIf
  EndIf
Else
  Debug "Erreur sur l'api"
EndIf

Re: Droit d'écriture

Publié : jeu. 30/août/2012 11:11
par microdevweb
Merci kernadec pour ta réponse,

Chez moi cela ne fonctionne pas dans C:\Windows\System32 alors que cela fonctionne dans C:\Windows.
ps: mon os Windos 7. Je continue à chercher.

Re: Droit d'écriture

Publié : jeu. 30/août/2012 11:17
par kernadec
ah bon.... le code fonctionne chez moi sous Seven 32
car sans créer de dossier il n'écrit pas de fichier.

peut que j'avais oublié un "\" :oops:
remplace

Code : Tout sélectionner

If ExamineDirectory(0, PeekS(*DIR,100), dossier$)  
par

Code : Tout sélectionner

If ExamineDirectory(0, PeekS(*DIR,100)+"\", dossier$) 
pour infos :
je dois préciser que je n'ai rien modifié pour les droits d'administrateur sur ce système

Cordialement
ps: code précédent corrigé

Re: Droit d'écriture

Publié : jeu. 30/août/2012 11:33
par Ar-S
Attention à vos versions x86 et x64
Pour manipuler des dossiers/fichiers/exe dans des endroits sensibles de windows 7 x64 il faut compiler un exe en x64...

Re: Droit d'écriture

Publié : jeu. 30/août/2012 11:48
par microdevweb
Merci kernadec,

Mais j'ai essayé en donnant le répertoire directement et il ne veux pas créer de répertoire et encore moi un fichier dans le dossier système même en utilisant l'api createfile_.

Par contre dans le répertoire windows il veut bien donc, je vais faire avec.

Merci aussi Ar-S,

Mais je suis en 64 et cela ne marche pas.