En regardant dans cela, je suppose que vous allez devoir créer le processus en utilisant WMI via l'interface COM. À la fin de la journée, cela rend cette option très difficile et très sujet à l'échec pour une foule de raisons (WMI étant désactivé ou sécurisé, l'utilisateur ne donnera pas toute confiance, etc.) Je suppose que vous seriez beaucoup mieux La création d'un paquet de déploiement .msi ou quelque chose de similaire qui était capable de sortir et télécharger le framework, si nécessaire. Il y a beaucoup de modèles de déploiement disponibles, presque tous qui se sentent supérieurs à celui-ci.
Cela dit, si vous allez faire ceci:
Pour obtenir l'objet COM, vous allez vouloir utiliser l'API AutomationFactory.CreateObject(...)
. Pour réellement faire le script WMI, vous allez vouloir créer l'objet WbemScripting.SWbemLocator
en tant que racine. Tim Heuer provides a sample here.
À partir de là, utilisez la méthode ConnectServer
pour obtenir un service WMI sur la machine nommée. Vous pouvez ensuite interroger le module Win32_Process
pour créer de nouveaux processus. Edit: J'ai passé un peu de temps à travailler dessus et, même sur ma machine locale en tant qu'administrateur, je rencontre des problèmes de sécurité. Le code correct serait quelque chose de similaire à:
dynamic locatorService = AutomationFactory.CreateObject("WbemScripting.SWbemLocator");
dynamic wmiService = locatorService.ConnectServer("winmgmts:{impersonationLevel=impersonate,authentationLevel=Pkt}//./root/cimv2");
dynamic process = wmiService.Get("Win32_Process");
dynamic createParameters = process.Methods_["Create"].InParameters.SpawnInstance_;
createParameters.CommandLine = "cmd.exe";
wmiService.ExecMethod("Win32_Process", "Create", createParameters);
L'application en cours d'installation est une application .NET? Si oui, en quoi le framework .NET est-il un obstacle pour l'installateur? – AnthonyWJones