C # Usługa Windows Tworzy proces, ale go nie wykonuje

Sprawdziłem więc wiele witryn, badanych od wielu dni. I nie znalazłem ani nie wymyśliłem jednego z moich własnych rozwiązań tego problemu.

Wiem, najwyraźniej od Windows Vista, usługę Windows od czasu jej utworzenia w Sesji 0, która nie jest w stanie współdziałać z plikami wykonywalnymi GUI, takimi jak aplikacje konsolowe i inne oprogramowanie, które są częścią innych Sesji, które nie są sesją 0.

Według firmy Microsoft usługa, która to robi, byłaby potencjalnym „wirusem”. Rozumiem rozumowanie ich myślenia. Ale to jedyne rozwiązanie naszych problemów.

//This is how I am calling the process.
public void startVM(string vmname) {

    string cmdline = startvm --type headless VM2000";
    ProcessStartInfo startInfo = new ProcessStartInfo("cmd.exe");
    startInfo.WindowStyle = ProcessWindowStyle.Minimized;
    startInfo.Arguments = string.Format(@"c:\vms\vboxmanage startvm {0}",vmname);
    Process.Start(startInfo);

}

Tak się dzieje:

Tworzę usługę Windows, usługa ta przy uruchamianiu rozpocznie proces. W tym przypadku „cmd.exe”. Sprawdziłem wiele razy i jestem pewien, że proces został rzeczywiście utworzony. Ale argumenty, rzeczywiste polecenia, które chcę, aby cmd.exe wykonał ... są ignorowane. Po prostu nigdy się nie zdarzają. Przetestowałem kod gdzie indziej, jako bibliotekę, jako aplikację formularza Windows działa jak w zegarku. Ale jako usługa nie będzie działać.

Próbowałem rozwiązań, takich jak umożliwienie interakcji z komputerem. Nawet z klucza rejestru. Próbowałem nawet wywoływać różne pliki wykonywalne i zdarza się to samo: tworzy proces, ale nie wykonuje poleceń ani argumentów.

Czytałem, że wiele osób miało ten problem ... jednak nie znaleziono żadnego rozwiązania dla wszystkich tych stron, dla których widziałem ten problem. Nawet użytkownicy z StackOverflow.

    //Located in the service class inheriting from ServiceBase
    protected override void OnStart(string[] args)
    {
        //System.Diagnostics.Debugger.Launch();
        IVBoxCom vBox = new VBoxCom();
        //This method calls the method you see above.
        vBox.StartVM("WIN2K");

    }

To jest klasa instalatora usług:

        ServiceInstaller installer = new ServiceInstaller();
        installer.ServiceName = "Steven-VBoxService"; //This has to be the exact Name of the Service that has ServiceBase Class
        installer.DisplayName = "Steven-VBoxService";
        installer.StartType = ServiceStartMode.Manual;
        base.Installers.Add(installer);

        //Creates an Executable that convokes the Service previously installed.
        //Note: In theory, I can create 10 Services, and run them in a single Service Process
        ServiceProcessInstaller installer2 = new ServiceProcessInstaller();
        installer2.Account = ServiceAccount.LocalSystem;    //Windows service.
        //installer2.Password = "sh9852"; //Why would I used these options?
        //installer2.Username = @"FITZMALL\hernandezs";
        installer2.Password = null;
        installer2.Username = null;
        base.Installers.Add(installer2);

Zauważyłem, że gdy chcę uruchomić usługę, utknie ona w „Rozpoczęcie”, a następnie po prostu się zatrzymuje. Ale proces tworzenia cmd.exe lub VBoxManage.exe, ale nigdy właściwie nic nie robi.

questionAnswers(2)

yourAnswerToTheQuestion