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 :

Service et sessions


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 29
    Par défaut Service et sessions
    Bonjour a tous !

    Voila, j'ai ecrit un service en C# que se lance automatiquement au demarage de windows.
    Comment pourrais-je faire redémarer ce service à chaque changement de session d'un utilisateur ?

    Ce service me creer egalement un dossier. J'aimerais supprimer tous ces droits et autoriser seulement le root à pouvoir y accepder, lire et ecrire.
    en gros :
    rwx --- --- root:root

    j'ai trouvé ca pour ajouter des droits à un utilisateur :

    AddDirectorySecurity(DirectoryName, @"MYDOMAIN\MyAccount", FileSystemRights.ReadData, AccessControlType.Allow);

    et le même genre pour en supprimer, mais comment supprimer tous les droits d'un coup ?

    merci de votre aide !

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Un service est lancé indépendament d'une session.
    Donc pour le refaire démarrer en fonction de la session de l'utilisateur à mon avis il faut essayer de détecter soit même le log off et log on de l'utilisateur.
    Bref tout cela pour dire qu'il n'y a pas de truc automatique prévu pour les services pour faire cela à ma connaissance.

    Pour le dossier, j'ai pas compris tu as trouvé la méthode et tu ne sais aps l'utiliser ? Ou tu n'as pas trouvé la méthode ?

    Au fait pourquoi veux tu relancer le service pour chaque user, cela ne me parait pas avoir de sens pour un service ?

  3. #3
    Membre averti
    Inscrit en
    Août 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 29
    Par défaut
    En ce qui concerne les droits, je suis un peu perdu sous windows (je viens du monde unix ou chmod, chown et fstat est roi)
    J'ai trouve le moyen d'ajouter des droit à un utilisateur sur un dossier, mais histoire d'être sûr qu'il n'y a que cet utilisateur qui a les droits, j'aimerais supprimer tous les autres avant.
    Je ne veux pas donner des droits en plus, mais les limiter à un seul utilisateur.

    Merci pour ta réponse.

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Regarde au niveau de l'objet Directory ou DirectoryInfo (peut être même DirectorySystemInfo s'il existe, je ne suis plus sur, je le connais pour File, alors ...)
    Ils ont peut être les méthodes pour la gestion des droits pour les répertoires.

    Comment pourrais-je faire redémarer ce service à chaque changement de session d'un utilisateur ?
    J'ai pas l'impression d'avoir été clair . Je t'ai demandé l'intérêt de faire cela. En effet je comprendrais que tu veuilles faire uen vérification sur certains répertoires en fonction de l'utilisateur connecté, mais pkoi relancé le service carrément.
    Enfin bref un service peut s'auto-piloter, du moins je crois.

    Je viens de penser à un truc pour faire ce que tu veux faire. Un script qui se lance au démmarage d'une session. Celui-ci pourrait arrêter ton service et le redemarrer.

    Sous windows à l'aide de gpedit (console msc) dans paramètres windows, dans script, tu peut ajouter des scripts de démmarage et d'arrêts de session.

  5. #5
    Membre averti
    Inscrit en
    Août 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 29
    Par défaut
    Mon service loggue grace à un FileSystemWatcher les actions mennée dans un dossier sur un fichier.

    Je log tout ca dans un fichier XML par utilisateur.
    Afin de savoir dans quel fichier écrire, je dois savoir quel est l'utilisateur courant.

    Pour le moment, chaque fois que je dois logger une info, je vais chercher le nom d'utilisateur et la date afin de savoir dans quel fichier écrire. Ce n'est pas très élégant.

    Si je veux eviter de me poser une question chaque fois que je recois un signal du FileSystemWatcher (assez frequement quand meme!), je dois savoir quand l'utilisateur se log, ou se délog.
    Si je décide de placer le code qui va me chercher le nom de l'utilisateur courant au moment du redemarage du service, il me suffit de redemarer le service chaque fois qu'un utilisateur se log.

    Plus élégant encore, je pourrais avoir un bool qui me dit si j'ai été délogé ou pas et agir en fonction. Ca m'évite le redémarage du service, mais ca implique que celui-ci doit recevoir un signal de log/delog.

    Merci pour ta réponse l'idée du script au démarage de la session est bonne, mais j'aimerais rendre le service aussi autonome que possible.

    Tu comprends mieux?
    Merci encore pour tes réponses.

  6. #6
    Membre Expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Par défaut
    Pour le moment, chaque fois que je dois logger une info, je vais chercher le nom d'utilisateur et la date afin de savoir dans quel fichier écrire. Ce n'est pas très élégant.
    Est-ce réellement génant ? Je veux dire, que cela ne soit pas élégant est assez subjectif. En terme de performance, cela reste à tester, et évaluer le delta entre ta solution actuelle, et celle de catcher l'evenement log/delog. Notamment, redémarrer le service peut également être bien couteux.

    En effet, si techniquement tu pouvais t'abonner à l'evenement de log de manière simple et rapide, cela serait le mieux (mais combien de temps et d'énergie vas tu déployer pour cela ? Si c'est un projet perso, ok, si c'est pro et que c'est la dernière étape, ok aussi, sinon... a calculer).

Discussions similaires

  1. Web Services et session
    Par lenoil dans le forum Services Web
    Réponses: 2
    Dernier message: 11/01/2012, 18h13
  2. web service + statefull session bean
    Par pass38 dans le forum Services Web
    Réponses: 4
    Dernier message: 29/07/2008, 17h35
  3. Service ou programme actif apres fermeture de session
    Par SlideMT dans le forum Windows
    Réponses: 2
    Dernier message: 12/04/2006, 10h47
  4. Réponses: 3
    Dernier message: 03/04/2006, 12h04
  5. Réponses: 4
    Dernier message: 24/06/2004, 13h20

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