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 :

Créer un lecteur réseau authentifié


Sujet :

C#

  1. #1
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut Créer un lecteur réseau authentifié
    bonjour,

    pour un projet, je vais devoir manipuler des fichiers csv que je vais déposé sur un serveur de fichier. je cherche un peu d'aide pour comprendre comment créer un lecteur réseau authentifier vers se serveur de fichier pour déposer mes fichiers et les manipuler

    j'ai trouvé ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    System.Diagnostics.Process.Start(@("net use Y: [file://nomServeur/ \\nomServeur 
    ] /USER:nomUser motDePasseUser /PERSISTENT:NO");
    ou ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.Diagnostics.Process.Start("net", @"use Y: [file://nomServeur/ \\nomServeur] /USER:nomUser motDePasseUser /PERSISTENT:NO");
    est ce la meilleur solution ?

    merci de votre aide

  2. #2
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    j'ai trouvé ce code

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
     
    /// <summary>
        /// Provides access to a network share.
        /// </summary>
        public class NetworkShareAccesser : IDisposable
        {
            private string _remoteUncName;
            private string _remoteComputerName;
     
            public string RemoteComputerName
            {
                get
                {
                    return this._remoteComputerName;
                }
                set
                {
                    this._remoteComputerName = value;
                    this._remoteUncName = @"\\" + this._remoteComputerName;
                }
            }
     
            public string UserName
            {
                get;
                set;
            }
            public string Password
            {
                get;
                set;
            }
     
            #region Consts
     
            private const int RESOURCE_CONNECTED = 0x00000001;
            private const int RESOURCE_GLOBALNET = 0x00000002;
            private const int RESOURCE_REMEMBERED = 0x00000003;
     
            private const int RESOURCETYPE_ANY = 0x00000000;
            private const int RESOURCETYPE_DISK = 0x00000001;
            private const int RESOURCETYPE_PRINT = 0x00000002;
     
            private const int RESOURCEDISPLAYTYPE_GENERIC = 0x00000000;
            private const int RESOURCEDISPLAYTYPE_DOMAIN = 0x00000001;
            private const int RESOURCEDISPLAYTYPE_SERVER = 0x00000002;
            private const int RESOURCEDISPLAYTYPE_SHARE = 0x00000003;
            private const int RESOURCEDISPLAYTYPE_FILE = 0x00000004;
            private const int RESOURCEDISPLAYTYPE_GROUP = 0x00000005;
     
            private const int RESOURCEUSAGE_CONNECTABLE = 0x00000001;
            private const int RESOURCEUSAGE_CONTAINER = 0x00000002;
     
     
            private const int CONNECT_INTERACTIVE = 0x00000008;
            private const int CONNECT_PROMPT = 0x00000010;
            private const int CONNECT_REDIRECT = 0x00000080;
            private const int CONNECT_UPDATE_PROFILE = 0x00000001;
            private const int CONNECT_COMMANDLINE = 0x00000800;
            private const int CONNECT_CMD_SAVECRED = 0x00001000;
     
            private const int CONNECT_LOCALDRIVE = 0x00000100;
     
            #endregion
     
            #region Errors
     
            private const int NO_ERROR = 0;
     
            private const int ERROR_ACCESS_DENIED = 5;
            private const int ERROR_ALREADY_ASSIGNED = 85;
            private const int ERROR_BAD_DEVICE = 1200;
            private const int ERROR_BAD_NET_NAME = 67;
            private const int ERROR_BAD_PROVIDER = 1204;
            private const int ERROR_CANCELLED = 1223;
            private const int ERROR_EXTENDED_ERROR = 1208;
            private const int ERROR_INVALID_ADDRESS = 487;
            private const int ERROR_INVALID_PARAMETER = 87;
            private const int ERROR_INVALID_PASSWORD = 1216;
            private const int ERROR_MORE_DATA = 234;
            private const int ERROR_NO_MORE_ITEMS = 259;
            private const int ERROR_NO_NET_OR_BAD_PATH = 1203;
            private const int ERROR_NO_NETWORK = 1222;
     
            private const int ERROR_BAD_PROFILE = 1206;
            private const int ERROR_CANNOT_OPEN_PROFILE = 1205;
            private const int ERROR_DEVICE_IN_USE = 2404;
            private const int ERROR_NOT_CONNECTED = 2250;
            private const int ERROR_OPEN_FILES = 2401;
     
            #endregion
     
            #region PInvoke Signatures
     
            [DllImport("Mpr.dll")]
            private static extern int WNetUseConnection(
                IntPtr hwndOwner,
                NETRESOURCE lpNetResource,
                string lpPassword,
                string lpUserID,
                int dwFlags,
                string lpAccessName,
                string lpBufferSize,
                string lpResult
                );
     
            [DllImport("Mpr.dll")]
            private static extern int WNetCancelConnection2(
                string lpName,
                int dwFlags,
                bool fForce
                );
     
            [StructLayout(LayoutKind.Sequential)]
            private class NETRESOURCE
            {
                public int dwScope = 0;
                public int dwType = 0;
                public int dwDisplayType = 0;
                public int dwUsage = 0;
                public string lpLocalName = "";
                public string lpRemoteName = "";
                public string lpComment = "";
                public string lpProvider = "";
            }
     
            #endregion
     
            /// <summary>
            /// Creates a NetworkShareAccesser for the given computer name. The user will be promted to enter credentials
            /// </summary>
            /// <param name="remoteComputerName"></param>
            /// <returns></returns>
            public static NetworkShareAccesser Access(string remoteComputerName)
            {
                return new NetworkShareAccesser(remoteComputerName);
            }
     
            /// <summary>
            /// Creates a NetworkShareAccesser for the given computer name using the given domain/computer name, username and password
            /// </summary>
            /// <param name="remoteComputerName"></param>
            /// <param name="domainOrComuterName"></param>
            /// <param name="userName"></param>
            /// <param name="password"></param>
            public static NetworkShareAccesser Access(string remoteComputerName, string domainOrComuterName, string userName, string password)
            {
                return new NetworkShareAccesser(remoteComputerName,
                                                domainOrComuterName + @"\" + userName,
                                                password);
            }
     
            /// <summary>
            /// Creates a NetworkShareAccesser for the given computer name using the given username (format: domainOrComputername\Username) and password
            /// </summary>
            /// <param name="remoteComputerName"></param>
            /// <param name="userName"></param>
            /// <param name="password"></param>
            public static NetworkShareAccesser Access(string remoteComputerName, string userName, string password)
            {
                return new NetworkShareAccesser(remoteComputerName,
                                                userName,
                                                password);
            }
     
            private NetworkShareAccesser(string remoteComputerName)
            {
                RemoteComputerName = remoteComputerName;
     
                this.ConnectToShare(this._remoteUncName, null, null, true);
            }
     
            private NetworkShareAccesser(string remoteComputerName, string userName, string password)
            {
                RemoteComputerName = remoteComputerName;
                UserName = userName;
                Password = password;
     
                this.ConnectToShare(this._remoteUncName, this.UserName, this.Password, false);
            }
     
            private void ConnectToShare(string remoteUnc, string username, string password, bool promptUser)
            {
                NETRESOURCE nr = new NETRESOURCE
                {
                    dwType = RESOURCETYPE_DISK,
                    lpRemoteName = remoteUnc
                };
     
                int result;
                if (promptUser)
                {
                    result = WNetUseConnection(IntPtr.Zero, nr, "", "", CONNECT_INTERACTIVE | CONNECT_PROMPT, null, null, null);
                }
                else
                {
                    result = WNetUseConnection(IntPtr.Zero, nr, password, username, 0, null, null, null);
                }
     
                if (result != NO_ERROR)
                {
                    throw new Win32Exception(result);
                }
            }
     
            private void DisconnectFromShare(string remoteUnc)
            {
                int result = WNetCancelConnection2(remoteUnc, CONNECT_UPDATE_PROFILE, false);
                if (result != NO_ERROR)
                {
                    throw new Win32Exception(result);
                }
            }
     
            /// <summary>
            /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
            /// </summary>
            /// <filterpriority>2</filterpriority>
            public void Dispose()
            {
                this.DisconnectFromShare(this._remoteUncName);
            }
        }
    qui peut s'utiliser ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
             using (NetworkShareAccesser.Access(REMOTE_COMPUTER_NAME, DOMAIN, USER_NAME, PASSWORD))
             {
                    File.Copy(@"D:\tmp\xxxxxxx", @"\\xxxxxxx\xxxxxx\xxx\xxxxxx");
              }

Discussions similaires

  1. Problème pour créer un lecteur réseau permanent
    Par jerome2710 dans le forum Réseau
    Réponses: 1
    Dernier message: 31/01/2015, 11h41
  2. Réponses: 2
    Dernier message: 01/08/2008, 13h29
  3. Créer un lecteur réseau
    Par 501darts dans le forum MFC
    Réponses: 4
    Dernier message: 17/03/2006, 00h36
  4. Comment créer un lecteur réseau w ?
    Par kikica dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 16/03/2006, 15h46
  5. comment créer un lecteur réseau, disque dur virtuel ?
    Par FFF dans le forum Autres Logiciels
    Réponses: 10
    Dernier message: 15/03/2006, 09h40

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