2011-07-27 2 views
1

En VB.net je peux exécuter des commandes personnalisées sur Windows Services:ExecuteCommand de VB6 vers .NET service

Desktop:

Const SmartShutdown As Integer = 12 

Dim myService As New ServiceController("SampleService") 
myService.ExecuteCommand(SmartShutdown) 

Windows Service:

Protected Overrides Sub OnCustomCommand(ByVal command As Integer) 

Est-il aussi possible d'exécuter des commandes de VB6 à .net Windows-Service?

Répondre

1

Vous pouvez utiliser la fonction API ControlService pour envoyer des codes de contrôle. Cela nécessite que vous avez appelé OpenService avec l'accès approprié et que votre processus s'exécute au niveau requis. Sur Vista +, cela peut être fait en utilisant le manifeste normal (process wide) ou COM elevation.

1

Vous pouvez utiliser les VB6 Shell fonction et l'outil de ligne de commande sc.exe pour contrôler les services Windows, par exemple:

Shell("cmd /C 'sc stop SampleService > %APPDATA%\svc.log'") 

Mise à jour

Pour envoyer une commande personnalisée, par exemple:

Shell("cmd /C 'sc control SampleService 128 > %APPDATA%\svc.log'") 

La commande personnalisée doit être comprise entre 128 et 255.

+0

Existe-t-il également un moyen d'exécuter des commandes personnalisées? Mon service gère les outils utilisant des DLL partagées. Quand j'installe une nouvelle version du programme principal, mon programme d'installation (écrit en vb6) devrait vérifier si des outils sont en cours d'exécution. – joau

+0

@joau Oui, vous pouvez, s'il vous plaît voir ma mise à jour. –