Windows非提权/非管理员权限下获取SYSTEM进程完整可执行路径
核心问题结论
在Windows 10 v1809及以上的非提权非管理员上下文下,无法直接获取所有高权限进程(包括SYSTEM服务、管理员进程)的完整二进制文件路径。
权限限制细节
- 调用
OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, ...)时,高权限进程的安全描述符会拒绝非特权用户的访问请求;而SeDebugPrivilege仅能在管理员或提权上下文下启用,非特权用户无法通过该权限绕过限制。 - 非提权环境下仅能正常查询:自身进程、同权限本地用户启动的进程,这与你测试的结果完全一致。
针对预构建需求的替代方案
你的核心需求是判断指定本地目录是否有进程在运行,无需获取所有进程的完整路径,可采用以下更直接的方法:
- 检查文件占用状态:尝试以独占访问模式打开目标目录下的可执行文件,若返回
ERROR_SHARING_VIOLATION错误,则说明该文件正在被进程使用。这种方法无需查询进程路径,完全绕开了进程权限限制。 - WMI有限查询:WMI的
Win32_Process类在部分场景下能返回部分高权限进程的路径,但该行为不稳定,且无法覆盖所有SYSTEM服务进程,不建议作为可靠方案依赖。
内容的提问来源于stack exchange,提问作者Martin Ba
相关产品推荐
相关产品推荐

