Accueil > Forum > > > > Processus a chaque ouverture de connexion
Processus a chaque ouverture de connexion
lundi 20 février 2006 à 15:38:09 |
Processus a chaque ouverture de connexion

fmurgues
|
Bonjour, Voila je fais un prog (visual C++ en MFC) qui va deconnecter l'utilisateur au bout d'un certain temps. Je mets un compteur a jour toutes les sec ds la base de reg et je delogue l'utilisateur une fois que celui ai attenint sa limite. Mon souci c que l'utilisateur n'a qu'a faire un ctrl alt suppr et killer l'appli Je pourrais tjrs la cacher mais avec avec d'autres outils du style process explorer, ca ne marchera pas. Est ce qu'il existe un moyen de le lancer en admin par exemple ou le proteger a chque ouverture de session ? J'avais penser à modifier des cles runservices ds hklm ds la BDR mais ca n'a rien donné, le prog ne se lance si l'utilisateur n'a pas les droits sur ce prog (de tte facon je ne veux pas qu'il puisse y acceder) Sinon les services windows mais le pb c ke l'appli tournera tous le temps ...
|
|
lundi 20 février 2006 à 19:06:08 |
Re : Processus a chaque ouverture de connexion

wxccxw
|
tu met dans
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system
un cle DWORD DisableTaskMgr a 1 et donc tu utilisateur ne peux plus ouvrir Ctrl Alt Supp
|
|
lundi 20 février 2006 à 19:34:54 |
Re : Processus a chaque ouverture de connexion

AlexN
|
Solution mutlithread:
explication :
- main crée un Thread pour l'utilisateur (Thread One)
- Le Thread utilisateur crée son propre Thread "Timer" (Thread Two) en lui passant une copie de son handle
ThreadOne tourne (en rond)...Thread Two compte...
Quand Thread Two a fini de compter, il termine le Thread One...
// TwoStopOne.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <windows.h>
#include <windows.h>
void Erreur (char *Msg) {
fprintf(stderr, Msg);
ExitProcess (1);
}
DWORD WINAPI ThreadTwo (LPVOID lpvThreadParam) {
DWORD dwResult = 0;
printf("Dans le thread two\n");
Sleep(2000); // Timer
TerminateThread((HANDLE)lpvThreadParam , dwResult); // Terminer le Thread One
printf("Thread two fini\n");
return dwResult;
}
DWORD WINAPI ThreadOne (LPVOID lpvThreahParam) {
DWORD dwResult = 0, dwThreadId;
HANDLE hThread, hThreadOne;
printf("Dans le thread one\n");
DuplicateHandle(
GetCurrentProcess(),
GetCurrentThread(),
GetCurrentProcess(),
&hThreadOne, 0, FALSE, DUPLICATE_SAME_ACCESS);
hThread = CreateThread(NULL,0,ThreadTwo, (LPVOID)&hThreadOne, 0, &dwThreadId);
if ( hThread == NULL ) Erreur ("CreateThread(Two)");
CloseHandle(hThread);
while(1);
}
int main(int argc, char* argv[])
{
HANDLE hThread;
DWORD dwThreadId;
hThread = CreateThread(NULL,0,ThreadOne, NULL,0, &dwThreadId);
if ( hThread == NULL ) Erreur ("CreateThread(One)");
CloseHandle(hThread);
Sleep(5000);
return 0;
}
Les deux threads étant inclus dans le même processus. L'utilisateur ne
peut distinguer le Thread "Timer", il ne peut pas le stopper. (dans la
fenetre CTRLALTSUPPR, il ne peut faire qu'une chose terminer le
processus en entier)
Je sais pas si ça peut répondre à ta question.
|
|
mardi 21 février 2006 à 09:22:47 |
Re : Processus a chaque ouverture de connexion

fmurgues
|
Merci pr les reponses mais ca ne resoud pas mn pb du moins en partie : pr la premiere reponse je l'avais deja mis en place par les groupes policies. pr la deuxieme reponse l'idee d'avoir deux thread est bien mais le souci c'est qu'il suffit de terminer le process pere pr arreter le prog... Il faudrait qu'il y ait deux proccess qui verifient chqe ms la presence des 2 mais là je suis depassé !!!
|
|
mardi 21 février 2006 à 11:30:35 |
Re : Processus a chaque ouverture de connexion

AlexN
|
Si tu veux empêcher le père (threadone, le thread utilisateur) de se
terminer avant que le fils (threadtwo) n'ai fini de compter, ca veut
dire que tu veux empêcher l'utilisateur de terminer sa connexion avant
que toi (threadtwo) l'ai décidé. Tu dois pouvoir laisser l'utilisateur
se deconnecter quand il le souhaite, même si le compteur n'est pas fini.
A mon avis un programme qui empêche l'utilisateur de terminer quand lui
a envie (ou qui ne s'arrête que quand le concepteur le décide, c'est
pareil) ne fera pas une longue carrière.
|
|
mardi 21 février 2006 à 11:42:29 |
Re : Processus a chaque ouverture de connexion

fmurgues
|
Entierement d'accord avec toi, je voudrais que l'utilisateur ne puisse l'arreter mais lors d'une fermeture de session qu'il n'y ait pas de pb. Dc du coup je pense laisser tomber cette solutioin, en fait j'ai mis mon exe en service lancé par le cpte admin local de la machine. Celui ci doit verifier si qqun et connecté lire la base de registre et declecncher le compteur. Le souci est que lors du lancement de l'exe à la main pas de pb, il voit bien ds le registre un utilisateur (clé logon user name ds HKLM) et le cpteur peut se lancer. (le but c de verifier a chaque sec si cette clé logon existe pr savoir si un utilisateur est logué ou pas) Par contre des qu'il se lance par le service ca plante... Il ne reconnait pas cette clé. Je pense qu'il doit y avoir un pb de droit mais la je ne vois pas.
ps : j'ai essayé de le lancer avec le cpte local, ca ne marche pas non plus (de tte facon, je pense que l'utilisateur pourrait larreter apres ...)
|
|
mardi 21 février 2006 à 12:48:25 |
Re : Processus a chaque ouverture de connexion

AlexN
|
Je ne sais pas si l'utilisation de la base de registres est legitime
dans ton cas. Là ça va, tu n'a qu'un seul utilisateur test. Mais dans
un vrai environnement multi-utilisateurs, tu vas encombrer ta base de
registres avec une multitude de petits compteurs. Tu risques d'avoir de
graves problèmes de perfomances (sauf son ton appli tourne juste pour
une personne) en lisant toutes les secondes ce gros pavé de windows. La
base de registres sert plus pour stocker des informations systèmes, que
des données de programmes.
D'autre part, si tu lances un service en arrière plan de "surveillance
de visiteurs" il faut faire attention à ne pas inverser les rôles, à
savoir, si ton service va régulièrement interroger quelquechose pour
savoir si quelqu'un est là, il peut mobiliser des ressources
inutilement. Tandis que s'il est réveillé uniquement quand quelqu'un
"frappe à la porte", c'est mieux.
Soit tu fais un processus "écouteur" qui toutes les secondes se
réveille pour fouiller la base de registres ou autre chose et voir s'il
y a quelqu'un et qui en plus décompte les secondes pour ceux qui sont
déjà connectés (coûte cher).
Soit tu fais un processus "écouteur", disons endormi, prêt à
créer une connexion et un compteur chaque fois qu'il reçoit une demande
d'ouverture de session (coûte moins cher, je pense).
L'idée avec le multithread est que chaque utilisateur dispose de son
propre compteur, libérant ainsi, main (le processus ecouteur) de
travail inutile (decompter le temps pour les utlisateurs deja
connectés). Et d'autre part, comme chaque compteur est intégré dans le
processus maitre, l'utilisateur n'a aucun accès, ni aucun contrôle
dessus.
Quant à tes problèmes de droits d'accès, ça peut venir du fait que la
base ou une partie n'est pas accessible à ton process. je sais pas..
|
|
Cette discussion est classée dans : ouverture, prog, utilisateur, ds, processus
Répondre à ce message
Sujets en rapport avec ce message
comment utiliser getvolumeinformation [ par shinevilkyo ]
tout d abort boujour ,je suis nouveau ds la prog sur windows et j aurais voulu faire un prog qui me permette de liste tout ce qui a ds un cd rom.mais
Utilisateur actif sur le prog [ par Xilofeon ]
BonsoirVoila je cherche un code me permettant de savoir si l'utilisateur est actif sur le programme ou inactif au bou de 10 min par exemple. Euh pour
Processus et utilisateur [ par Palex ]
bonjourj'ai recuperer dans la msdn la focntion pour lister tous les processus, mais maintenant j'aimerais ne lister que les process de l utilisateur q
cin ? [ par dleewax ]
Bonjour !je vous explique mon cas...je suis debutant et je tente de développer un petit prog de résolution d'équation...j'aimerais que l'utilisateur p
Récupération de l'environnement [ prog VC++ ] [ par thomychat ]
Bonjour,Je cherche à récupérer en C++ (dans un prog graphique) les arguments de l'utilisateur avant le lancement de mon prog.Je m'explique : en C, un
List Processus + utilisateur [ par tk101 ]
Bonjour,alors après avoir chercher sur la MSDN, j'ai trouver les informations nécessaires pour listerles processus (HOURRA) mais j' arrive pas à avoir
[API]-ouverture automatique d'un prog. [ par flaith ]
Bonjour, j'ai fait un prog (Dev-C++) qui utilise les API windows. j'ai des fichiers textes avec extensions ".gs" que j'édites. Ce que je cherches à fa
systray [ par leprov ]
bonjour a tous.apres avoir arpenté les sources, j'ai trouvé pas mal de sources pour mettre un prog ds la systray, mais jai pas mal de mal a capter com
Comment mettre une icone à un prog ? [ par KissyFroth ]
bon je pense que tout est ds le titre : je voudrais simplement mettre une icone à une application : faut-il préciser cela dans les options de compilat
Lancer un processus sous windows avec le nom d'utilisateur SYSTEM [ par logant83 ]
Bonsoir, voila alors j'aimerai pouvoir lancer ma base MySQL quand je lance mon programme mais pour ce faire faut que je le mette dans les processus ma
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|