Je dois verrouiller le poste de travail à partir d'un service Windows écrit en VB.Net. J'écris l'application sur Windows 7 mais elle doit fonctionner sous Vista et XP également.
L'API User32 LockWorkStation ne fonctionne pas car elle nécessite un bureau interactif et j'obtiens une valeur de retour de 0.
J'ai essayé d'appeler %windir% \System32\rundll32.exe user32.dll,LockWorkStation à partir d'un processus et du shell, mais rien ne se passe.
Configurer le service pour qu'il interagisse avec le bureau est impossible car j'exécute le service sous le compte administrateur pour qu'il puisse faire d'autres choses qui nécessitent des droits d'administrateur - comme désactiver le réseau, et vous ne pouvez sélectionner l'option d'interaction avec le bureau que si vous l'exécutez sous le compte système local.
Ce serait la question secondaire - comment exécuter une autre application avec des droits d'administration à partir d'un service fonctionnant sous le compte système local sans gêner l'utilisateur.
Je suis en train d'écrire une application pour contrôler l'accès à l'ordinateur et à l'Internet de mes enfants (que je prévois d'ouvrir une fois terminée) et j'ai donc besoin que tout se passe aussi discrètement que possible.
J'ai une interface utilisateur qui gère les paramètres et les notifications d'état dans la barre des tâches, mais elle est facile à tuer et donc à vaincre le verrouillage. Je pourrais créer une autre application Windows Forms cachée pour gérer le verrouillage, mais cela semble être une solution plutôt inélégante.
De meilleures idées, quelqu'un ?