J'écris un programme qui est utilisé comme une RemoteApp du serveur à la machine cliente.
Je sais qu'en utilisant System.Windows.Forms.SystemInformation.TerminalServerSession
Je peux déterminer si la session en cours est une session locale ou une session distante à partir de l'exécution de RemoteApp.
Existe-t-il un moyen pour moi, si la session Terminal Server est vraie (lorsque l'utilisateur exécute l'application à distance), d'indiquer à la machine locale d'exécuter une application, telle que MS Word? J'aimerais le faire en mode natif, sans utiliser de plug-ins ni de psexec si cela peut être aidé.
windows
remote-desktop
c#
rds
Bob.
la source
la source
Réponses:
Cela dépend de la façon dont les utilisateurs sont retirés du serveur, mais supposons qu’ils se trouvent tous dans un bureau à la fin d’un réseau ou d’un VPN.
Je créerais une application dotNet qui se connecterait à un serveur SQL central et analyserait toutes les 250 ms un simple enregistrement avec le nom de votre PC. Le deuxième champ de l'enregistrement est le programme à exécuter.
Cela signifie qu'une application basée sur un serveur peut écrire dans la base de données chaque fois qu'elle souhaite ouvrir un programme localement. dans un délai de 250 ms, l’application locale trouvera l’enregistrement, lancera l’application et supprimera l’enregistrement.
la source
vous avez 4 options avec divers degrés de complexité, de fiabilité et de considérations de déploiement.
1) PSEXEC. sérieusement, beaucoup de gens utilisent psexec à cette fin et travaillent la plupart du temps. de loin la solution la plus simple. utilisez -i pour pouvoir interagir avec le bureau.
2) WMI. vous pouvez écrire du code .net ou VBScript pour exécuter l'application cliente. son aussi scripty que psexec, mais est entièrement natif. J'ai déjà eu des problèmes de fiabilité avec WMI, mais il s'agissait d'opérations automatisées à l'échelle du domaine. Une grande partie du problème semblait concerner la gestion de l'alimentation sur des postes de travail inactifs. http://www.codeproject.com/Articles/31113/Create-a-Remote-Process-using-WMI-in-C
3) planificateur de tâches Windows. à partir du serveur, planifiez l'exécution d'une tâche sur le client dans la session des utilisateurs. toujours scripty, avec beaucoup de pièces mobiles. http://technet.microsoft.com/en-us/library/cc772785%28v=ws.10%29.aspx
4) créez un service réseau Windows pour le PC local et, sur signal, lancez la tâche sous la session des utilisateurs. Pour ce faire, vous devrez peut-être utiliser le planificateur de tâches. beaucoup de travail à développer et à tester, difficile à déployer, beaucoup de pièces mobiles, et toujours scripty à certains endroits, mais ce serait probablement une réponse microsofts, car elle met correctement en œuvre leurs conseils pour l'élévation des processus.
la source