Служба Windows запускает файл локально, но не на сервере - PullRequest
0 голосов
/ 09 ноября 2009

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

protected override void OnStart(string[] args)
{
    // 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();
}

Ответы [ 4 ]

0 голосов
/ 09 ноября 2009

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

// 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";
0 голосов
/ 09 ноября 2009

Зарегистрировано ли расширение файла на сервере? Возможно, серверу не удалось найти действие, связанное с .avc. Возможно, вы захотите переместить это на ServerFault , поскольку это, скорее всего, разница в конфигурации или версии ОС Windows.

0 голосов
/ 09 ноября 2009

Возможно, вы захотите поместить блок try catch в этот метод и записать любое исключение в журнал событий, это должно указать вам направление записи.

Но, как сказал Д. Шоули, это звучит как проблема с конфигурацией.

0 голосов
/ 09 ноября 2009

Мой первый инстинкт - проверка прав доступа.

...