从windows文件监视器服务中启动可执行文件

本文关键字:启动 可执行文件 服务 监视器 windows 文件 | 更新日期: 2023-09-27 18:05:03

我有一个用c#编写的文件监视服务,当它检测到文件丢失时我需要启动一个应用程序。我使用记事本作为一个测试应用程序启动。文件监视器工作正常,但我无法启动记事本。任何帮助我错过了什么将是伟大的。

检测到文件删除时触发的代码:

public void FileCreated(object source, FileSystemEventArgs inArgs)
        {
            Process LaunchApp = new Process();
            LaunchApp.StartInfo.FileName = ConfigurationManager.AppSettings["AppStartPath"];
            LaunchApp.Start();
           // Process.Start(ConfigurationManager.AppSettings["AppStartPath"]);
            Log.WriteLine(" File added: " + DateTime.Now + " " + inArgs.FullPath);
        }

来自app.config的路径引用:

<add key="AppStartPath" value="Notepad.exe"/>

我也试过:

<add key="AppStartPath" value="C:'Windows'System32'Notepad.exe"/>

从windows文件监视器服务中启动可执行文件

我有一个文件监视服务,

服务运行在单独的安全上下文中,而不是用户登录会话中的进程。

如果您将会话ID列添加到任务管理器的进程选项卡,或者-更好的是,在进程资源管理器中。

服务启动的任何进程都将在服务自己的上下文中运行:而不是在用户中。这样做有很好的安全原因。

要从服务执行交互操作,您需要在用户上下文中运行的每个用户代理。通常,服务监听一个命名管道,用户代理从启动组(或注册表中的run键)运行。代理连接到命名管道,并可以响应来自服务(或来自用户代理的服务)的请求。