C # Служба Windows создает процесс, но не выполняет его

Итак, я проверил много много сайтов, исследовал в течение нескольких дней. И я не нашел или не придумал одно из моих собственных решений этой проблемы.

Я знаю, по-видимому, начиная с Windows Vista, службы Windows, так как она была создана в сеансе 0, она не может взаимодействовать с исполняемыми файлами GUI, такими как консольные приложения и другие программы, которые являются частью других сеансов, которые не являются сеансами 0.

Согласно Microsoft, Сервис, который делает это, будет потенциальным «Вирусом». Который я понимаю, рассуждения для их мышления. Но это единственное решение наших проблем.

//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);

}

Итак, вот что происходит:

Я создаю Службу Windows, эта служба при запуске запустит Процесс. В этом случае "cmd.exe". Я проверял много раз, и я уверен, что процесс на самом деле создан. Но аргументы, настоящие команды, которые я хочу, чтобы cmd.exe выполнял ... они игнорируются. Они просто никогда не случаются. Я тестировал код в другом месте, в виде библиотеки, в качестве приложения Windows Form он работает как часы. Но все же, как Сервис, он не будет работать.

Я пробовал такие решения, как возможность взаимодействия с рабочим столом. Даже из реестра ключ. Я пытался даже вызывать разные исполняемые файлы, и это происходит одинаково: он создает процесс, но не выполняет команды или аргументы.

Я читал, что у многих была эта проблема ... однако все эти сайты не нашли решения, для которого я видел эту проблему. Даже пользователи из 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");

    }

Это класс установщика сервиса:

        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);

Я заметил, что когда я хочу запустить службу, она застревает на «Запуск», а затем просто останавливается. Но процесс cmd.exe или VBoxManage.exe создается, но на самом деле никогда ничего не делает.

Ответы на вопрос(2)

Ваш ответ на вопрос