系统与用户PATH环境variables… winmerge只有在将path添加到用户PATH时才有效

如果我将C:\Program Files (x86)\WinMerge到User PATHvariables(通过右键单击计算机 – >高级系统设置 – >环境variables),一旦我打开一个新的cmd shell WinmergeU.exe不被识别。 如果我将该path添加到系统PATHvariables,WinmergeU.exe被正确识别。 我虽然用户和系统之间没有什么区别,但是如果我把它设置在系统上,所有用户都会看到它,而用户PATH是本地的。 难道我做错了什么?

编辑1:

在下面,您可以首先看到C:\Program Files (x86)\WinMerge添加到系统PATHvariables(但不是用户),然后添加到用户PATHvariables(但不是系统)。 在第一种情况下Winmerge窗口正确启动(未显示),正如你所看到的,echo%PATH%命令显示了path。 在第二种情况下,它不会启动,并且它不会被echo%PATH%显示。 (请注意,我已经清楚地确认了OK,并在拍摄这些截图之前closures了环境variables窗口,并且在更改PATH并按下ok后,我打开了一个新的cmd)。 这个问题可能与我的问题在这里相关( echo%PATH%扩展到只有系统还是用户variables? ),但因为它可能不是我张贴了两个不同的问题。

系统

用户

你必须得到错误的东西,或者你的机器有环境问题。 添加用户PATH环境变量确实会导致它被合并到新进程的环境中。

更新:也许这个来自MSDN主题的关于环境变量的评论可能是相关的:

发现在Windows server 2003上,一旦系统PATH传递了1920个字符,用户PATH环境变量就不再与它合并来设置进程的PATH环境变量,尽管系统中完整的PATH(即使更大)将被包含在进程PATH变量。

对于16.6,我已经确认这个问题也是一个路径长度问题。 在cmd提示符下,输入'set',你可以看到所有的env。 变量。 用户路径节奏变量和其他不包括在内。 我保存了原始的完整路径文本,然后我浏览并修剪了被视为不必要的特定(系统)路径元素。 在此之后,在新的cmd会话中,现在键入“set”将显示添加到系统路径元素末尾的用户路径元素,因为他们现在适合。

在Windows 7上,还要确保系统路径不以反斜杠结尾。 如果是这样的话,用户路径将按照惯例附加到系统路径中,但是在换行符之后,会导致事件中断。 在后一种情况下,简单的命令“path”和“echo%PATH%”将打印2个不同的输出。