Question

Je dois créer un service à distance et romprais plutôt pas à une commande et exécuter « sc \ créer remotemachine ...... » et que vous voulez le faire dans le code C #.

Cependant, lors de l'exécution du code, même si la commande sc fonctionne très heureux et est donc la gestion du système à distance l'appel ManagementScope.Connect est de lancer une exception avec « Le serveur RPC est indisponible. »

Un extrait de code qui fait cela est

string machineName = "othermachine";
string path = string.Format(@"\\{0}\root\cimv2", machineName);
ManagementScope scope = new ManagementScope(path);
scope.Connect();

car cela est au sujet de la première étape du voyage que je suis un peu coincé à l'endroit où aller. Les travaux de commande sc, alors que fait-il différent (autre que de ne pas utiliser les bibliothèques .net - peut-être que je dois frapper le winapi plus dur)

Merci

Était-ce utile?

La solution

Après avoir réfléchi cela pour un peu en voyant le temps affecté à cette tâche étant erroded loin que je suis la vieille documentation api WIN32 et sur [DllImport] Ed les appels que je devais faire ce la « ancienne ». Être un vieux chien C que je connaissais mon chemin autour de ces appels, incroyable comment se fait beaucoup de retour même après quelques années d'utilisation des bibliothèques gérées.

Ce que je devais faire était d'être en mesure de créer un langage gestuel, lancez-vous, faire un travail utile, l'arrêter et le supprimer. Le créer, démarrer, arrêter et supprimer sont la mécanique et je voulais me concentrer sur la partie « travail utile » de l'activité.

J'ai d'abord copié le exe de services au partage ADMIN $ et vérifié le chemin local qui (avec nos administrateurs de serveur, il est impossible de dire!). Pour ce faire appel I

["netapi32.dll"]NetShareGetInfo 

et puis j'utiliser ce qui suit à partir advapi32.dll

  • OpenSCManager
  • CreateService
  • StartService
  • OpenService (pour quand je veux arrêter et supprimer - ne gardez pas les poignées ouvertes car cela peut prendre un certain temps si propre à garder thngs autonome)
  • ControlService
  • QueryServiceStatus
  • CloseServiceHandle

Tout cela fonctionne même à travers la connexion VPN.

Je ne peux que supposer que le api géré essaie de faire beaucoup plus que ce que je réellement besoin - la différence de temps prise avec l'api géré et l'api Windows est beaucoup, et aucune garantie que le api géré obtiendra à travers elle n'a pas été un bon moyen avant.

Autres conseils

Il est évident que le code de stock de MSDN ne peint pas toute l'image. Je reçois les mêmes résultats que vous.

Découvrez ce que ce gars-là fait .

EDIT:

Je crois que vous essayez sur un groupe de travail et non un domaine, non? Voilà l'astuce, les groupes de travail exigent un peu plus de travail pour passer à travers. Le lien ci-dessus semble avoir une solution de contournement. Je vais essayer à nouveau de la maison ce soir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top