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

Discussion :

Impossible de créer un ficher dans le dossier system32

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 16
    Points : 15
    Points
    15
    Par défaut Impossible de créer un ficher dans le dossier system32
    Salut tout le monde,
    Ma application doit créer deux fiches:
    un ficher qui s’appelle "Info" dans le ficher C:\Windows\system32\oobe
    et un ficher qui s'appelle "Backgrounds" dans le ficher C:\Windows\system32\oobe\Info


    Mais quand même quand j'utilise l'application avec des permissions de l'administrateur elle ne crée pas.

    Mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
       QDir dir1("C:\\Windows\\System32\\oobe\\Info");
       if (!dir1.exists()){
         dir1.mkdir(".");
       }
     
     
       QDir dir2("C:\\Windows\\System32\\oobe\\Info\\Backgrounds");
       if (!dir2.exists()){
         dir2.mkdir(".");
       }
    J'ai essayé donner l'utilisateur déjà des permissions avec QFile::setpermissions et utilisé la programme avec des permissons de l'administrateur.

    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
     
       qt_ntfs_permission_lookup++; // turn checking on
       if(!QFile::setPermissions(QString("C:\\Windows\\System32\\oobe"), QFile::permissions(QString("C:\\Windows\\System32\\oobe")) | QFile::WriteUser))
       {
           cout << "cannot set perms on file" << endl;
       }
       qt_ntfs_permission_lookup--; //turn checking off
     
     
       QDir dir1("C:\\Windows\\System32\\oobe\\Info");
       if (!dir1.exists()){
         dir1.mkdir(".");     
       }
     
       QDir dir2("C:\\Windows\\System32\\oobe\\Info\\Backgrounds");
       if (!dir2.exists()){
         dir2.mkdir(".");
       }

  2. #2
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Points : 5 545
    Points
    5 545
    Par défaut
    Bonsoir,

    Vous dîtes "fichier" pour nommer des éléments créés avec QDir, par conséquent, je pars du principe que vous souhaitez créer une arborescence de dossiers (peut-être que j’interprète mal votre question).
    Quoi qu'il arrive, votre programme devra être lancé en mode administrateur, sinon il n'aura pas les droits suffisants.
    Par rapport à votre problème, j'imagine que c'est simplement lié au fait qu'il ne connaisse pas C:\\Windows\\System32\\oobe.

    Je vous proposerais ainsi plutôt ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (!QFileInfo("C:\\Windows\\System32\\oobe\\Info\\Backgrounds").exists())
    {
        QDir dir("C:\\Windows\\System32");
        if (!dir.mkpath("oobe\\Info\\Backgrounds"))
            qDebug() << "Could not create the given path.";
    }
    Si vous souhaitez plutôt créer un fichier nommé "Backgrounds" dans le dossier "Info", alors ce code vous conviendra mieux :

    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
    if (!QFileInfo("C:\\Windows\\System32\\oobe\\Info").exists())
    {
        QDir dir("C:\\Windows\\System32");
        if (!dir.mkpath("oobe\\Info"))
            qDebug() << "Could not create the given path.";
    }
     
    QFile file("C:\\Windows\\System32\\oobe\\Info\\Backgrounds");
    if (file.open(QIODevice::WriteOnly | QIODevice::Text)
    {
        // Succès de l'ouverture du fichier (la création du fichier est faite par le open())
        // Écriture de ce que vous souhaitez dans le fichier.
    }
    else
        qDebug() << file.errorString();
    Bonne soirée à vous,
    Louis
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  3. #3
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 426
    Points : 43 044
    Points
    43 044
    Par défaut
    L'UAC empêchera l'écriture dans c:\windows\system32
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 16
    Points : 15
    Points
    15
    Par défaut Wow64FsRedirection
    Salut tout le monde,

    merci pour essayer m'aider.
    J'ai trouvé maintenant le problème. Le problème est que ma application est en 32 bit et je l'utilise sur Windows 64 bit donc toutes les choses qui la programme veux faire dans le ficher System32 Windows laisse lui venir à C:\Windows\SysWOW64.
    Voilà maintenant je dois trouver comment s’utilise le fonction Wow64DisableWow64FsRedirection en C++.

    J'ai trouvé le solution comment d’écrire en system32 sur Windows 64bit avec une programme en 32 bit:

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
       PVOID OldValue = NULL;
       if( Wow64DisableWow64FsRedirection(&OldValue) )
       {
       QDir dir1("C:\\Windows\\system32\\oobe\\Info");
        if (!dir1.exists()){
         dir1.mkdir(".");     
        }
            if ( FALSE == Wow64RevertWow64FsRedirection(OldValue) )
             {
                //  Failure to re-enable redirection should be considered
                //  a criticial failure and execution aborted.
                 return;
             }
       }
     
       PVOID OldValue1 = NULL;
       if( Wow64DisableWow64FsRedirection(&OldValue1) )
       {
       QDir dir2("C:\\Windows\\system32\\oobe\\Background");
        if (!dir2.exists()){
         dir2.mkdir(".");
        }
            if ( FALSE == Wow64RevertWow64FsRedirection(OldValue1) )
             {
                //  Failure to re-enable redirection should be considered
                //  a criticial failure and execution aborted.
                 return;
             }
       }

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

Discussions similaires

  1. [RHEL 5.2][LVM] Impossible de créer un LV dans mon VG
    Par tck-lt dans le forum Administration système
    Réponses: 3
    Dernier message: 11/08/2010, 15h31
  2. Impossible de créer une macro dans Visio 2007
    Par JerBi dans le forum Visio
    Réponses: 5
    Dernier message: 15/05/2008, 10h25
  3. Impossible de créer des fichiers dans un répertoire
    Par isabelle674 dans le forum Solaris
    Réponses: 11
    Dernier message: 24/01/2008, 00h04
  4. Réponses: 53
    Dernier message: 03/08/2007, 14h50
  5. Créer un fichier dans un dossier
    Par naevaj dans le forum C
    Réponses: 12
    Dernier message: 26/05/2006, 14h27

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