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