从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"/>
我有一个文件监视服务,
服务运行在单独的安全上下文中,而不是用户登录会话中的进程。
如果您将会话ID列添加到任务管理器的进程选项卡,或者-更好的是,在进程资源管理器中。
服务启动的任何进程都将在服务自己的上下文中运行:而不是在用户中。这样做有很好的安全原因。
要从服务执行交互操作,您需要在用户上下文中运行的每个用户代理。通常,服务监听一个命名管道,用户代理从启动组(或注册表中的run键)运行。代理连接到命名管道,并可以响应来自服务(或来自用户代理的服务)的请求。