在Windows 10版本1607中,进程现在可以使用清单属性(https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247.aspx#maxpath)选择加入长路径感知
如何以编程方式检查调用进程是否具有长路径感知功能?请注意,仅检查操作系统版本或注册表项的值是不够的,因为Windows版本为> = 1607,系统范围内禁用长路径,并且长路径不显示该过程。
答案 0 :(得分:0)
尽管文档说可以为Win32和UWP应用程序启用长路径名,但对于UWP却不行。 dev: 0 ino: 0
uid: 0 gid: 0
使用API KernelBase!BasepIsProcessLongPathAwareByManifest
从清单中获取值,并且该API无法用于UWP。
可以通过在PEB中手动设置适当的位来解决该问题:
SxS API
TEB的定义可以从winternl.h复制,IsLongPathAwareProcess位是第4个字节的最高有效位,即可以重写为
NtCurrentTeb()->ProcessEnvironmentBlock->IsLongPathAwareProcess = 1;