是否可以提取进程的path,如果这个进程是由用户帐户的pipe理员帐户执行的? 如果您的用户帐户没有这个过程的权限。 CreateToolhelp32Snapshot获取系统中所有进程的列表,而不取决于用户权限,但是此快照仅包含.exe名称,不含path。
CreateToolhelp32Snapshot
和Process32First
/ Next
会给你每个进程的进程ID。 使用该ID与OpenProcess
获取进程句柄,然后将该句柄传递给QueryFullProcessImageName
(需要Windows Vista或更高版本)。 当你调用OpenProcess
,请求PROCESS_QUERY_LIMITED_INFORMATION
访问权限,你甚至应该能够访问更高权限的进程。
花了很多时间试图处理权限。 实际上,我认为 – 可以授予必要的特权进行处理,使用户和管理员可以相互看到和合作。 但是,我没有找到使用这种方法的合适解决方案。 正是我所需要的 – 同步在不同用户下运行的应用程序,并且为我的案例找到了解决方案 – 全局互斥!
当应用程序启动时,它会创建它自己的互斥锁,并检查是否存在搜索其互斥锁的类似进程。