【发布时间】:2019-11-27 02:31:44
【问题描述】:
您好我目前正在尝试获取正在运行的进程的目录并不断获取错误 System.ComponentModel.Win32Exception:“访问被拒绝” 我在下面使用的以下代码,我目前正在使用 try catch 来防止此错误,但是 try catch 被证明是一种需要宝贵处理时间的缓慢方法,我在这里询问是否有方法来检测是否存在进程的数据可通过布尔值访问,以防止需要 try catch 语句,从而减少处理时间。
string dir = System.IO.Path.GetDirectoryName(process.MainModule.FileName)
【问题讨论】:
-
this thread 回答你的问题了吗?
-
这个文件在哪个目录下?
-
可能会很慢,但是你需要多久获取一次目录名呢?您是否担心程序在执行时可能会潜伏到不同的目录?它看起来是一个使用单例并将结果缓存在第一次访问时
static的好地方。状态可以保存在另一个static中,您可以及时返回这两个值。 -
我几乎一直在获取目录名,程序的目的是查看是否有任何被列入黑名单的进程在运行,根据进程的路径等特定标准决定,然后杀死所有被列入黑名单的进程。我正在使用这个 atm 来阻止诸如 steamapps 文件夹之类的目录,几乎禁止所有 Steam 游戏。为了缓存数据,我会将进程的副本存储在列表中还是?
-
抱歉,我没发现您正在查看其他进程。即便如此,我还是会缓存
Id和StartTime以及您需要的任何其他信息。Id/StartTime对应该是唯一的。 (ID 被重复使用,但不太可能如此简单地使用并如此快速地重复使用,以至于StartTime不会改变。)Hashtable将是一个合适的集合,key是Id/StartTime对和value是需要的任何其他数据。不要忘记删除旧进程。