【问题标题】:Process.Start() ing exe doesn't workProcess.Start() ing exe 不起作用
【发布时间】:2015-08-16 12:53:39
【问题描述】:

我正在使用以下代码行来启动我制作的键盘记录器:

ProcessStartInfo keylogger = new ProcessStartInfo(@"C:\keylogger.exe");
keylogger.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(keylogger);

当我使用此代码时,键盘记录器会启动,但不会记录任何击键。我认为这是因为试图隐藏进程窗口,所以我将代码更改为:

ProcessStartInfo keylogger = new ProcessStartInfo(@"C:\keylogger.exe");
Process.Start(keylogger);

还是同样的问题,我什至单独尝试了Process.Start(@"C:\keylogger.exe");,但似乎也不起作用。

在所有情况下,键盘记录器都会启动,但不会将任何击键记录到日志文件中。但是,如果我双击并打开键盘记录器,它就可以正常工作了。

【问题讨论】:

  • 你检查文件路径了吗?尝试使用完整路径。
  • @Sievajet 您的意思是以管理员身份运行程序还是以管理员身份运行键盘记录器?当我双击管理弹出没有出现。
  • @HwasooLee 正如我所说的键盘记录器启动,我可以在任务管理器中看到它。
  • 这取决于您拥有的 UAC 设置,但请尝试从您的代码中以管理员权限运行该进程
  • 你是如何记录击键的?

标签: c# process.start keylogger


【解决方案1】:

似乎我所要做的就是更改工作目录..lol!

此代码有效:

ProcessStartInfo keylogger = new ProcessStartInfo(@"C:\keylogger.exe");
keylogger.WorkingDirectory = @"C:\";
keylogger.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(keylogger);

【讨论】:

  • 我喜欢这样做:keylogger.WorkingDirectory = System.IO.Path.GetDirectoryName(keylogger.FileName); 然后我知道路径是正确的,不会因为打字错误而出错...
  • @Idle_Mind 感谢您的建议!
【解决方案2】:

请参阅此页面上的“将击键发送到其他应用程序”:

http://msdn.microsoft.com/en-us/library/ms171548.aspx

您的主要问题是您的键盘记录器应用程序不是正在运行的应用程序,因此它无法捕获所有击键...

为了获取所有应用程序的按键,您需要连接到系统内核,请查看以下内容 http://www.codeproject.com/Articles/6362/Global-System-Hooks-in-NET

记住:

系统挂钩功能强大。而且,随着这种力量而来的是责任。当系统挂钩出现问题时,它们不仅会破坏您的应用程序。它们可以破坏系统上运行的每个应用程序。它实际上不太可能达到那种极端。尽管如此,在使用系统挂钩时,您需要对代码进行双重和三重检查。

【讨论】:

  • 那么如何克服呢?我没有完全理解。
  • 谁能解释一下他想说什么?
猜你喜欢
  • 1970-01-01
  • 2016-09-15
  • 1970-01-01
  • 2022-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多