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 :

Dossier Partager proteger


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Par défaut Dossier Partager proteger
    Bonjour

    dans le cadre d'un projet je doit mettre en reseaux une base access pour que des applications en C# y ai accès

    j'ai deja rendu le dossier invisible aux yeux du reseau en placan un $ a la fin du nom du dossier mais cela n'est que la 1ere securitè

    j'aimerais y placer un mot de passe


    la manière la plus simple serais de crèè un compte utilisateur uniquement pour son accès. de partager le dossier en autorisant uniquement ce nouvel utilisateur l'accès


    mais 2 questions me vienne a l'esprit.

    le nouveau compte utilisateur doit il etre administrateur? doit ton fair une manoeuvre special pour le login sur depuis le reseau?

    comment dir a C# "connecte toi a la base de donnèes de ce dossier en tant que Dupont/Password"
    ou encore "Envoy le dossier cour.pdf de tels dossier vers tels clef USB"

    merci de vos reponse

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Par défaut
    C'est pas une super idée. De plus tu pourrais utiliser SQL Server 2005 Express Edition qui se prête mieux à ce genre de problématique tout en restant gratuit et en supportant la même charge (voir plus) que Access. En général, le code à modifier pour passer de Access à SQL Server en restant en OLE ou en ODBC n'est pas excessif et reste beaucoup plus perenne dans le temps avec possibilité de mise à jour vers une version payante de SQL Server plus robuste.

    Concernant l'accès, tu peux effectivement créer un compte utilisateur qui a accès à ce répertoire. Il suffit ensuite d'utiliser WindowsIdentity et Impersonate pour prendre l'identité de cet utilisateur dans les programmes C# (ne fonctionne pas sous 98 / Me).

    Concernant l'envoi sur une clé USB, il suffit de vérifier la liste des lettres disponibles sur l'ordinateur et de déterminer celles qui sont de type lecteur amovible USB. WMI doit permettre de faire ça plutôt facilement.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Par défaut
    j'ai regarder se que tu m'as dit et j'arrive a recuperer mes infos mais pas a changer d'utilisateur.

    je vois pas comment crèè et paramétrè le IntPtr representant l'utilisateur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IntPtr user;
    System.Security.Principal.WindowsIdentity.Impersonate(user);
    Demande de presicions:
    après avoir effectuer le changement mon programme pourras lir le dossier en se faisant passer pour un autre utilisateur mais est ce que la personne utilisant mon programme pourras accédès a ce meme dossier en passant simplement par l'explorateur windows???

    et doit-on effectuer une manipulation pour tout remettre en ordre a la fin de l'operation ou est ce que tout se remet en place a la fermeture du programme??


    merci pour tout

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Par défaut
    pour finir j'ai reussi a trouver et donc j'ai fait les test qui on repondus a mes question

    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
    using System;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;
     
    namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            class Log{
                [DllImport("Advapi32.dll")]
                public static extern bool LogonUser(string sUserName,
                        string sDomain,
                        string sUserPassword,
                        uint dwLogonType,
                        uint dwLogonProvider,
                        out IntPtr pToken);
     
                [DllImport("Kernel32.dll")]
                public static extern void CloseHandle(IntPtr Token);
            }
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                listBox1.Items.Clear();
     
                listBox1.Items.Add(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
     
                IntPtr pToken;
                if ( Log.LogonUser("test","","soso",2,0,out pToken))
                {
                    System.Security.Principal.WindowsIdentity.Impersonate(pToken);
     
                    listBox1.Items.Add(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
     
                    String[] Tab = System.IO.Directory.GetFiles("D:/Nouveau dossier$/");
     
                    // System.IO.File.CreateText("D:/Nouveau dossier$/broum.txt");
     
                    Log.CloseHandle(pToken);
                }
            }
        }
    }

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

Discussions similaires

  1. Recuperer nom local d'1 dossier partagé depuis Poste Client
    Par bib34690 dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 14/10/2005, 20h51
  2. Réponses: 4
    Dernier message: 12/10/2005, 16h13
  3. (MS DOS) Création d’un dossier partager
    Par Furius dans le forum Windows
    Réponses: 18
    Dernier message: 06/10/2005, 19h19
  4. Accès refusé sur un dossier partagé après formatage
    Par musicmandj5 dans le forum Windows XP
    Réponses: 4
    Dernier message: 02/10/2005, 18h19
  5. [reseau] Lister dossiers partagés
    Par difficiledetrouver1pseudo dans le forum API standards et tierces
    Réponses: 12
    Dernier message: 04/09/2005, 00h01

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