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 :

Mapper un lecteur (reste non disponible) [Débutant]


Sujet :

C#

  1. #1
    Membre actif Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Points : 210
    Points
    210
    Par défaut Mapper un lecteur (reste non disponible)
    Bonjour,

    Je voudrais mapper des lecteurs et voici la procédure que j'utilise
    Le lecteur se crée mais reste comme "non disponible" et n’apparaît pas dans le poste de travail, visible uniquement via un "net use" dans la console

    quand j'utilise la commande céée dans reponse.commande directement dans la console ça fonctionne
    net use V: "\\portable\c$" xxxxxx /USER:europe\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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    private reseau connecter(reseau leLecteur)
            {
                reseau reponse = new reseau();
                reponse = leLecteur;
                reponse.resultat = "échec";
     
                string ph = @"use " + leLecteur.lettre + " \"" + leLecteur.chemin + "\"" + " " + leLecteur.motdepasse + " /USER:" + leLecteur.domaine + @"\" + leLecteur.user;
                reponse.commande = "net " + @"use " + leLecteur.lettre + " \"" + leLecteur.chemin + "\"" + " xxxxxx /USER:" + leLecteur.domaine + @"\" + leLecteur.user;
     
                Process p = new Process();
     
                p.StartInfo.CreateNoWindow = true;
                p.StartInfo.RedirectStandardOutput = true;
                p.StartInfo.RedirectStandardInput = true;
                p.StartInfo.RedirectStandardError = true;
                p.StartInfo.UseShellExecute = false;            
                p.StartInfo.Arguments = ph;
                p.StartInfo.FileName = "net.exe";
                p.Start();
     
                p.WaitForExit();
     
                reponse.message = p.StandardError.ReadToEnd();
     
                if (p.StandardOutput.ReadToEnd().IndexOf("La commande s'est termin‚e correctement")>-1)
                { reponse.resultat = "réussit"; }
     
                return reponse;
            }
    si vous avez une piste (le résultat est que la commande s'est terminée correctement, et pas d'erreur)

    Dans une autre application (la même mais plus bordélique) ça fonctionnait

    Merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 196
    Points : 5 785
    Points
    5 785
    Par défaut
    Tu n'exécuterai pas le project en tant qu'un autre utilisateur à tout hasard ?

    Sinon je préfèrerai cette ligne d'exécution :
    cmd /c net use V: "\\portable\c$" "xxxxxx" /USER:"europe\administrateur" &&exit 0 ||exit 1

    Si la commande se termine correctement "cmd.exe" quittera avec un code retour 0.
    Il vaut mieux éviter, tant que possible, de lire les flux de sorti et de les interpréter, sur un OS anglais ton programme ne fonctionnera pas.
    De plus sa simplifia ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
                Process p = new Process();
                p.StartInfo.CreateNoWindow = true;
                p.StartInfo.UseShellExecute = false;            
                p.StartInfo.Arguments = ph;
                p.StartInfo.FileName = "cmd.exe";
                p.Start();
                p.WaitForExit();
                reponse.resultat = (0 == p.ExitCode) ? "réussit" : "Echec";
                return reponse;

  3. #3
    Membre actif Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Points : 210
    Points
    210
    Par défaut
    Je test lundi dés que je peux

    merci

  4. #4
    Membre actif Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Points : 210
    Points
    210
    Par défaut
    Bonjour,

    Ca marche pas mieux voir moins bien car beaucoup plus long (trop long)

    Un autre utilisateur ??? ah bonne question
    je viens de tester avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wmic netuse where LocalName="V:" get UserName /value
    réponse : UserName=

    vide pffff

    donc le problème viendrait de la

  5. #5
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 196
    Points : 5 785
    Points
    5 785
    Par défaut
    Je testerai demain sur le domaine ton code, je te dirai si ça fonctionne ou pas.

    Tu as essayé sur différentes lettres de lecteurs sur différents postes ? Les caractères spéciaux du mot de passe sont bien prise en compte pas la commande net (encodage) ?

  6. #6
    Membre actif Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Points : 210
    Points
    210
    Par défaut
    je vais tester demain aussi sur d'autres postes.
    Ce code et ces mappages fonctionnaient avec une autre version
    A rien y comprendre

    Merci pour ton aide

  7. #7
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 196
    Points : 5 785
    Points
    5 785
    Par défaut
    Après test, ce code fonctionne correctement chez moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            public static bool connecter(string Unc, string Lecteur, string User, string Pass)
            {
                Process p = new Process();
                string line = @"/c net use " + Lecteur + ": \"" + Unc + "\" \"" + Pass + "\" /USER:\"" + User + "\" && exit 0 || exit 1";
                p.StartInfo.CreateNoWindow = true;
                p.StartInfo.UseShellExecute = false;
                p.StartInfo.Arguments = line;
                p.StartInfo.FileName = "cmd.exe";
                p.Start();
                p.WaitForExit();
                return (0 == p.ExitCode) ? true : false;
            }
    Mais je te conseillerai d'utiliser cette classe plus propre http://www.codeproject.com/Articles/...work-Drive-API

    Exemple d'utilisation :
    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
            public static bool connecter2(string Unc, string Lecteur, string User, string Pass)
            {
                aejw.Network.NetworkDrive oNetDrive = new aejw.Network.NetworkDrive();
     
                try
                {
                    oNetDrive.LocalDrive = Lecteur + ":";
                    oNetDrive.ShareName = Unc;
                    oNetDrive.MapDrive(User, Pass);
                    return true;
                }
                catch (Exception err)
                {
                    MessageBox.Show("Error: " + err.Message);
                    return false;
                }
            }

  8. #8
    Membre actif Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Points : 210
    Points
    210
    Par défaut
    Merci je vais tester
    Moi ici ça marche pas du tout, je pense que j'ai un autre problème dans le code ailleur. je vais chercher

    Merci pour ton aide

  9. #9
    Membre actif Avatar de Speed41
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    718
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 718
    Points : 210
    Points
    210
    Par défaut
    Avec la class ça fonctionne nikel

    Merci pour votre aide

    Mais je comprends pas que ça fonctionne dans une version du programme et pas dans celle la mais je laisse comme ça

    Merci encore

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

Discussions similaires

  1. [2005] Composants de Delphi 7 non disponibles dans 2005
    Par dacid dans le forum Bases de données
    Réponses: 5
    Dernier message: 04/08/2005, 17h18
  2. Projet/Options non disponible
    Par Duan dans le forum EDI
    Réponses: 2
    Dernier message: 31/05/2005, 21h32
  3. Imprimante non disponible dans QuickReport 3.0
    Par Writer dans le forum EDI
    Réponses: 1
    Dernier message: 23/05/2005, 10h30
  4. [TOMCAT] ressource non disponible
    Par mousstik dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 12/10/2004, 12h45
  5. [D8] Application serveur non disponible
    Par Keke des Iles dans le forum EDI
    Réponses: 4
    Dernier message: 27/09/2004, 12h06

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