作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
让我们以记事本为例。我如何才能在我的应用程序中 100% 确定记事本是否正在运行?我 100% 的意思是,如果有另一个名为“notepad.exe”的进程实际上不是一个真正的记事本,而是一个仿制品,我不想检测到它。只有真正的记事本。
我已经考虑过读取进程内存,但它比看起来更难,因为内存位移等。
标准方法是按名称,对吗?但对我来说,它真的很重要,它不是任何其他程序,因为我想与之交互,如果我发现错误的进程,将会严重失败。
有谁知道这样做的好方法吗?
PS:没有特定的编程语言可以做到这一点。如果可能的话,我更喜欢一个独立的解决方案。但如果需要,我会专门使用 .Net/C#。
最佳答案
要 99.9%1 确定您正在查看正确的可执行文件的唯一方法是验证文件的 digital signature .例如,您要确保所讨论的 notepad.exe 是由“Microsoft Corporation”签名的。
我会做这样的事情:
此方法避免了诸如必须提前知道文件应该位于何处(这几乎是不可能的——记事本是 installed in two locations )、它的哈希值应该是什么(显然必然会更改)或奇怪的用户行为等问题(用其他文本编辑器替换记事本)。
1 - 当然,不可能 100% 确定。某人真的确定可以使用预期的签名者名称对可执行文件进行自签名,并将证书添加到他们机器的根存储中,从而使签名看起来有效。
关于windows - 如何在windows上唯一标识一个进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10984908/
我是一名优秀的程序员,十分优秀!