如何在Windows中挂钩应用程序和进程启动?
发布时间:2020-12-13 21:29:49 所属栏目:Windows 来源:网络整理
导读:我正在尝试编写一个程序,它将挂钩到应用程序启动并捕获命令行.不知道从哪里开始,因为我在 Windows编程中非常环保. 非常感谢任何帮助 谢谢 你没有提到你喜欢的编程语言,所以我将使用C#作为代码片段. 您可以启动进程并捕获/写入其标准IO流. 以下代码段打开一个
我正在尝试编写一个程序,它将挂钩到应用程序启动并捕获命令行.不知道从哪里开始,因为我在
Windows编程中非常环保.
非常感谢任何帮助 谢谢
你没有提到你喜欢的编程语言,所以我将使用C#作为代码片段.
您可以启动进程并捕获/写入其标准IO流. 以下代码段打开一个进程并捕获其StdOut流: using (var process = Process.Start(new ProcessStartInfo(FileName = @"yourExecutablePath",UseShellExecute = false,RedirectStandardOutput = true))) using (var stdout = process.StandardOutput) Console.WriteLine(stdout.ReadToEnd()); 编辑1 看起来你想挂钩像CreateProcess这样的Windows API. 一种方法是编写内核驱动程序并使用诸如SSTD修补之类的挂钩技术.但编写内核驱动程序IMO非常麻烦. 在某些情况下,您可以使用用户级挂钩.有一些图书馆可以帮助您,包括:EasyHook,Deviare和MS Detour. 编辑2 您也可以使用WMI作为 using System.Management; // Run this in another thread and make sure the event watcher gets disposed before exit var start = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace")); start.EventArrived += new EventArrivedEventHandler(delegate (object sender,EventArrivedEventArgs e) { console.WriteLine("Name: {0},Command Line: {1}",e.NewEvent.Properties["ProcessName"].Value,e.NewEvent.Properties["Commandline"].Value); }); start.Start() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 硒 – 与桌面屏幕分辨率交互的Windows服务
- 如何在WIndows 7上使用INETMGR连接到远程IIS
- windows-server-2012-r2 – 系统更新后如何修复黑色窗口颜色
- 如何在Windows批处理文件中将PATH设置为带空格的另一个变量
- vbscript – Microsoft Edge和Windows 10是否支持HTA?
- 在Windows XP下安装Apache+MySQL+PHP环境
- windows下运行C程序,安装gcc
- windows-server-2008 – 是否很难设置Microsoft Forefront
- win10下的MongoDB安装和配置
- 在DataGridView控件中验证数据输入
推荐文章
站长推荐
- Windows – 将Azure网站迁移到Azure云服务
- Windows上的nginx:bind()到0.0.0.0:80失败
- windows-phone-8 – 在模拟器中浏览Windows Phon
- .net – 如何使用断点调试Windows服务?
- windows-server-2008 – 无法在2000域中使用dcpr
- windows – 使用Certum证书进行代码签名
- windows – 如何移动到某些选项卡上某些窗口中存
- 是否有一个用于Windows的开源C可视化调试器?
- SBS-2008上的Powershell ActiveDirectory-Module
- 被一个貌似简单的老技术问题虐了几天
热点阅读