IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Creer un dossier malgré le droit Administrateur


Sujet :

Delphi

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 427
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 427
    Points : 1 326
    Points
    1 326
    Par défaut Creer un dossier malgré le droit Administrateur
    Bonjour à toutes et à tous,

    Mon application à les droits Administrateur Vista, et pourtant impossible de créer le dossier "backgrounds" dans le répertoire "'%WINDIR%\SYSTEM32\oobe\info\".

    Est ce mon code ou l'Uac ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      if not DirectoryExists('%WINDIR%\SYSTEM32\oobe\info\backgrounds') then
      if not CreateDir('%WINDIR%\SYSTEM32\oobe\info\backgrounds') then
        raise Exception.Create('Impossible de créer ce dossier');
    Merci d'une aide éventuelle.

    @+,

    Cincap

  2. #2
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Salut,

    Cincap, es-tu certain de ne pas pouvoir faire autrement ?

    Car là tu vas à l'opposé des recommandations de sécurité.

    Tu es absolument obligé de placer un fichier dans un folder système ?

    Les dossiers user existent sous vista et +

    En plus c'est étudié pour.

    @+

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 427
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 427
    Points : 1 326
    Points
    1 326
    Par défaut
    @ Droïde Système7, bonjour, tu as totalement raison mais pour Windows seven ou l'application devrait fonctionner, il faut absolument respecter le chemin et la création de ce dossier.

    Ce fichier est une image Jpg qui servira de background.

    Je pencherai plutôt sur ma façon de tester si ce dossier existe et de le creer le dossier

    @+,

    Cincap

  4. #4
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Whaouuu pas de la tarte !

    Tu dois connaitre ce tuto :
    http://pascalfonteneau.developpez.co...phi/vista/uac/

    @+

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 427
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 427
    Points : 1 326
    Points
    1 326
    Par défaut
    @ Droïde Système7, J'utilise bien mon fichier manifest et apparemment c'était bien le code qui posait problème.

    Au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if not DirectoryExists('%WINDIR%\SYSTEM32\oobe\info\backgrounds') then
      if not CreateDir('%WINDIR%\SYSTEM32\oobe\info\backgrounds') then
        raise Exception.Create('Impossible de créer ce dossier');
    J'ai testé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if not DirectoryExists('C:\Windows\System32\oobe\info\backgrounds') then
      if not CreateDir('C:\Windows\System32\oobe\info\backgrounds') then
        raise Exception.Create('Impossible de créer ce dossier');
    Je pense que je peux cloturer ce topic, maintenant pourquoi WinDir ne fonctionne pas, c'est une autre histoire.

    Edit : pour windir, il suffit de créer une variable ce qui donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    windir:=GetEnvironmentVariable('SYSTEMROOT');
     
     if not DirectoryExists(windir +'\System32\oobe\info\backgrounds') then
     if not CreateDir(windir +'\System32\oobe\info\backgrounds') then
     raise Exception.Create('Impossible de créer ce dossier');
    @+,

    Cincap

  6. #6
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Path en dur ?

    D'autres façons plus élégantes de trouver les dossiers Windows.

    Exemple :

    As-tu tenté en passant par cette variable ?

    GetEnvironmentVariable('Windir');

    @+

    Edit :

    Tu as aussi CSIDL_SYSTEM => Répertoire System 32 de Windows

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 427
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 427
    Points : 1 326
    Points
    1 326
    Par défaut
    @ Droïde Système7, bonjour,avec CSIDL_SYSTEM, J'obtiens une erreur "Identificateur non déclaré" malgré que j'ai mis dans l'uses "ShlObj".

    J'ai testé avec "CSIDL_DESKTOP" pour vérifier si ma fonction est correcte et la cela fonctionne.

    Je cherche

    @+,

    Cincap

  8. #8
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Hello

    http://www.developpez.net/forums/d82...ciaux-windows/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    function GetWinFolder_V1(FolderConst: Integer):string;
    var
      RC    : Integer;
      IDL   : TSHItemID;
    begin
      result := '';
      RC := SHGetSpecialFolderLocation(0, FolderConst, PItemIDList(IDL));
      If RC = 0 Then
      begin
         Setlength(result,MAX_PATH);
         ZeroMemory(PChar(result),MAX_PATH);
         SHGetPathFromIDList(PItemIDList(IDL), PChar(result));
         result:=Trim(result);
      end;
    end;
     
     
    procedure TForm1.Button4Click(Sender: TObject);
    begin
      ShowMessage(GetWinFolder_V1($0025)); // En effet, ne passe pas => CSIDL_SYSTEM (Sous Vista)
    end;

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 427
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 427
    Points : 1 326
    Points
    1 326
    Par défaut
    @ Droïde Système7, par contre ta solution fonctionne sur Vista.

    Encore merci pour l'aide et pour le lien.

    @+,

    Cincap

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WS 2003] Probleme d'ouverture de dossier par le réseau malgré les droits
    Par darkterreur dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 07/10/2009, 13h09
  2. Réponses: 5
    Dernier message: 10/08/2006, 01h46
  3. creer un dossier dans la racine
    Par hm19000 dans le forum Langage
    Réponses: 2
    Dernier message: 04/08/2006, 00h48
  4. Réponses: 4
    Dernier message: 22/06/2006, 11h17
  5. [Win2k pro] Administrateur sans droits Administrateur ?
    Par Spack dans le forum Windows XP
    Réponses: 6
    Dernier message: 19/11/2005, 23h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo