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

C# Discussion :

Impossible de créer un fichier.


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Points : 115
    Points
    115
    Par défaut Impossible de créer un fichier.
    Bonjour à tous,

    Je travaille sur une application qui permet l'installation automatique d'un système...

    Lors du premier lancement du programme, je lui fait créer un fichier "Config.ini"
    Quand j'utilise le programme en local tous va bien

    Seulement je stock l'exécutable sur mon serveur de fichier local...
    Il est appeler par un script batch au moment de l'installation de la machine...

    Mais lorsque je le lance depuis le serveur de fichier il ne veut pas créer le fichier Config.ini
    J'ai mis un petit screenshot de l'erreur...

    Si vous pouviez m'aider j'en serais très heureux
    Images attachées Images attachées  

  2. #2
    Membre régulier Avatar de Piet
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 111
    Points : 108
    Points
    108
    Par défaut
    Clairement, ce sont les droits d'écriture qui sont en cause...

    Où essaies-tu de créer le fichier? Sur le serveur ? en local?

    Quels sont les droits de l'utilisateur sur cette cible?

    La réponse à cette question te donnera sans doute la solution.
    Piet

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Points : 115
    Points
    115
    Par défaut
    Merci,

    Donc je suis en session administrateur et je lance via un script \\Serveur\Partage\logiciel.exe

    Et il essaie de créer c:\Logiciel\Config.ini

    Voilà je sais pas si vous voulez d'autre renseignement?

    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
    31
     
     
            const string FileConfig = "C:\\Loginstaller\\Config.ini";
     
     private void Form1_Load(object sender, EventArgs e)
            {
                if (File.Exists(FileConfig))
                {
                   //
                   // Cette partie de code fonctionne, et est confidentiel désolé...
                   //
                }
     
                else
                {
                    StreamWriter fluxConfigFile = null; // le fichier texte
                    try 
                    {
                        // création du fichier texte
                        using (fluxConfigFile = new StreamWriter(FileConfig)) 
                        {
                              fluxConfigFile.WriteLine("0");
                        }
                        StatusLabel1.Text = " Phase 1 : Configuration";
                    } 
                    catch (Exception exp) 
                    {
                        MessageBox.Show("Erreur : " + exp.Message);
                    }
                }
            }

  4. #4
    Membre régulier Avatar de Piet
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 111
    Points : 108
    Points
    108
    Par défaut
    Pour moi, il devrait y avoir un problème sur l'existance du répertoire...

    Et si tu ajoutes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.IO.Directory.CreateDirectory("C:\\Loginstaller");
    dans la première ligne du try.

    Qu'est-ce que ça donne ?
    Piet

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Points : 115
    Points
    115
    Par défaut
    Citation Envoyé par Piet Voir le message
    Pour moi, il devrait y avoir un problème sur l'existance du répertoire...

    Et si tu ajoutes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.IO.Directory.CreateDirectory("C:\\Loginstaller");
    dans la première ligne du try.

    Qu'est-ce que ça donne ?
    Le répertoire existe déjà...
    En faite, même si je créer le fichier ou quoi ou ques manuellement, sa ne fonctionne pas...

    Si l'application est lancé depuis un lecteur réseau sa ne fonctionne pas...
    Il y à t-il une policy qui bloquerais?

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Points : 115
    Points
    115
    Par défaut
    Le problème surviens lors du :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fluxConfigFile = new StreamWriter(FileConfig)

  7. #7
    Membre régulier Avatar de Piet
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 111
    Points : 108
    Points
    108
    Par défaut
    Ayant testé l'exécution directe de \\Server\FolderShared\ProgName\Prog.exe, le fichier s'est correctement créé dans le bon répertoire...

    Evidemment, je suis admin du domaine quand je fais le test et je peux écrire dans le répertoire C:\

    Je ne peux donc pas plus t'aider... Regarde au niveau des propriétés du répertoire par programmation. ça t'indiquera peut-être quelque chose.
    Piet

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Points : 115
    Points
    115
    Par défaut
    Bizare, car je suis admin et sa ne fonctionne pas non plus...
    Je continue mes recherches...

  9. #9
    En attente de confirmation mail
    Inscrit en
    Juillet 2002
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Essai de créer le fichier sur le serveur.
    Ton programme sera alors un mise à jour de ce fichier.
    Si cela marche, tu as bien un problème de droit sur le fichier en création.
    Si cela ne marche pas, le problème est ailleurs comme la vérité (qui est ailleurs )

    A+

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Les droits d'un exécutables ne sont pas une exact copie des droits de la personne qui le lance. La configuration par défaut du Framework .NET réduit considérablement, pour des raisons de sécurités évidentes, les droits des exécutables lancés depuis un partage réseau.
    Vérifiez dans la console de configuration que les exécutables signés avec votre clé de compagnie ont bien des droits étendus et que votre exécutable est correctement signé.

  11. #11
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Points : 115
    Points
    115
    Par défaut
    Citation Envoyé par Piet Voir le message
    Ayant testé l'exécution directe de \\Server\FolderShared\ProgName\Prog.exe, le fichier s'est correctement créé dans le bon répertoire...

    Evidemment, je suis admin du domaine quand je fais le test et je peux écrire dans le répertoire C:\

    Je ne peux donc pas plus t'aider... Regarde au niveau des propriétés du répertoire par programmation. ça t'indiquera peut-être quelque chose.
    Suite à çà, j'ai vérifier...
    J'arrive à exécuté le programme pleinement sur mon poste... Tous fonctionne, même si je l'exécute depuis le réseau.

    Seulement, si je le fais depuis un autre poste sa ne fonctionne pas...

    Citation Envoyé par bacelar Voir le message
    Les droits d'un exécutables ne sont pas une exact copie des droits de la personne qui le lance. La configuration par défaut du Framework .NET réduit considérablement, pour des raisons de sécurités évidentes, les droits des exécutables lancés depuis un partage réseau.
    Vérifiez dans la console de configuration que les exécutables signés avec votre clé de compagnie ont bien des droits étendus et que votre exécutable est correctement signé.
    J'ai vérifié du coté des options de compilations et j'ai trouvé des choses intéressante...
    J'ai vu certaine choses avec ClickOnce, et des certificats de sécurité, mais malheureusement je ne sais pas comment m'en servir :s

    Merci,

  12. #12
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Points : 115
    Points
    115
    Par défaut
    J'ai trouver 2, 3 truc, mais qui ne marche bien sur pas

    Vissiblement il faut jouer avec les FileIOPermission ...

    Voici un bout de code qui fonctionne en local, mais pas sur un lecteur réseau...
    Si vous voulez tester, essayer sur une autre machine que sur celle que vous compiler...
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.IO;
    using System.Security.Permissions;
    using System.Security;
    using System.Text;
     
    namespace FileIO
    {
        class Program
        {
            static void Main(string[] args)
            {
     
                FileIOPermission f = new FileIOPermission(PermissionState.None);
                f.AllLocalFiles = FileIOPermissionAccess.AllAccess;
                try
                {
                    f.Demand();
                    StreamWriter fluxConfigFile = null; // le fichier texte
                    try
                    {
                        // création du fichier texte
                        using (fluxConfigFile = new StreamWriter("O:\\Installer\\Config.ini"))
                        {
                            Console.WriteLine("Le fichier Config.ini est créé...");
                            fluxConfigFile.WriteLine("0");
                        }
                    }
                    catch (Exception exp)
                    {
                        Console.WriteLine("Erreur : " + exp.Message);
                    }
                }
                catch (SecurityException s)
                {
                    Console.WriteLine(s.Message);
                }
     
     
            }
        }
    }

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 074
    Points : 12 120
    Points
    12 120
    Par défaut
    Avez-vous mis le SP1 du FW3.5 ?

  14. #14
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2006
    Messages : 105
    Points : 115
    Points
    115
    Par défaut
    Voilà Ça fonctionne ^^

    Effectivement il faut bien le SP1 du FW3.5 pour que cela fonctionne.
    Et les machines sur lesquels j'installe l'application ne l'avais pas

    Merci beaucoup

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

Discussions similaires

  1. /tmp full impossible de créer un fichier
    Par twiste dans le forum Administration système
    Réponses: 8
    Dernier message: 18/07/2008, 20h30
  2. 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
  3. [new File]Impossible de créer un fichier
    Par valal dans le forum Langage
    Réponses: 3
    Dernier message: 22/05/2007, 16h08
  4. [WinForms]Impossible de créer un fichier déjà existant.
    Par LeNeutrino dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/12/2006, 13h05
  5. Réponses: 1
    Dernier message: 14/12/2005, 01h46

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