Назад | Перейти на главную страницу

Служба Windows запускает файл локально, но не на сервере

Я создал простую службу Windows в точечной сети, которая запускает файл. Когда я запускаю службу локально, я вижу, что файл в диспетчере задач работает нормально. Однако, когда я запускаю службу на сервере, она не запускает файл. Я проверил путь к файлу, и все в порядке. Я также проверил разрешения для папки и файла, и они тоже в порядке. Также нет никаких исключений. Ниже приведен код, используемый для запуска процесса, запускающего файл. я опубликовал это первым при переполнении стека, и некоторые люди думали, что это проблема конфигурации, поэтому я переместил ее сюда. Любые идеи?

  try
        {

            // TODO: Add code here to start your service.
            eventLog1.WriteEntry("VirtualCameraService started");

            // Create An instance of the Process class responsible for starting the newly process.

            System.Diagnostics.Process process1 = new System.Diagnostics.Process();

            // Set the directory where the file resides
            process1.StartInfo.WorkingDirectory = "C:\\VirtualCameraServiceSetup\\";

            // Set the filename name of the file to be opened
            process1.StartInfo.FileName = "VirtualCameraServiceProject.avc";

            // Start the process
            process1.Start();
        }
        catch (Exception ex)
        {
            eventLog1.WriteEntry("VirtualCameraService exception - " + ex.InnerException);
        }

Итак, проблема заключалась в том, что файл не был связан с программой на сервере. Поэтому вместо того, чтобы пытаться открыть файл, мне нужно было открыть программу для запуска файла, а затем передать файл в качестве аргумента программе. Ниже приведен синтаксис.

 // Set the directory where the file resides
            process1.StartInfo.WorkingDirectory = "C:\\Program Files (x86)\\Axis Communications\\AXIS Virtual Camera 3\\";

            // Set the filename name of the file to be opened
            //process1.StartInfo.FileName = "VirtualCamera.exe C:\\VirtualCameraServiceSetup\\VirtualCameraServiceProject.avc";
            process1.StartInfo.FileName = "VirtualCamera.exe";
            process1.StartInfo.Arguments = "VirtualCameraServiceProject.avc";

Попробуйте заменить "C:\Path to File.avc" с участием "C:\Path to Program that opens AVC files\ProgramName.exe" "C:\Path to File.AVC" и посмотрите, изменится ли это что-нибудь. Я видел, как это происходило раньше, когда кто-то, открывая файл определенного типа двойным щелчком по файлу, работает нормально в интерактивном режиме (из-за ассоциации файлов), но при вызове как пакетного задания, службы или аналогичного ему требуется фактическое имя exe с именем файла, переданным в качестве параметра.

Также дважды проверьте, разрешено ли вашей службе взаимодействовать с рабочим столом, поскольку это может потребоваться (хотя в зависимости от вашей версии сервера Windows этот параметр может отсутствовать, поскольку он был удален в более новых версиях).