Windows 服务在本地运行文件,但不在服务器上运行文件

Windows 服务在本地运行文件,但不在服务器上运行文件

我在 dot net 中创建了一个简单的 Windows 服务,用于运行一个文件。当我在本地运行该服务时,我可以看到文件在任务管理器中正常运行。但是,当我在服务器上运行该服务时,它不会运行该文件。我检查了该文件的路径,没有问题。我还检查了文件夹和文件的权限,它们也没有问题。而且没有发生任何异常。下面是用于启动运行该文件的进程的代码。我首先在 stack overflow 上发布了此内容,有些人认为这是一个配置问题,所以我将其移到这里。有什么想法吗?

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

答案1

好的,问题在于该文件未与服务器上的程序关联。因此,我需要打开程序来运行该文件,而不是尝试打开该文件,然后将该文件作为参数传递给程序。以下是语法。

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

答案2

尝试用 替换"C:\Path to File.avc""C:\Path to Program that opens AVC files\ProgramName.exe" "C:\Path to File.AVC"看看是否有任何变化。我以前见过这种情况,有人通过双击文件打开某种类型的文件,交互工作正常(考虑到文件关联),但当作为批处理作业、服务或类似程序调用时,它需要将实际的 exe 名称与文件名作为参数传递。

另外,请仔细检查您的服务是否被允许与桌面交互,因为这可能是必需的(尽管根据您的 Windows 服务器版本,此选项可能不存在,因为它已在较新版本中被删除)。

相关内容