用户文章转载:Windows 用户都来看看,这个锅 P4 不背
本篇作者向华是一名游戏行业从业者,也是 Perforce Helix Core(P4V)用户。
你可能知道,P4V 里可以调用 cmd 运行 P4 命令行。
具体来说,可以在 Workspace 某一层目录右键打开命令行,并在命令行中输入 P4 命令,完成某些 P4V 图形化界面之外的操作。
挺好用的,对吧。
但就在前两天,本来想在同事的 Windows 电脑上秀一下命令行操作。
翻车了!
来,邀你围观事发现场。(横屏观看视频更佳)
发生了什么?不能理解
P4 的命令行被弹出在一个单独的窗口执行,并一闪而过。
命令应有的输出被弹出窗口「吸」走了。
我的第一感觉是,奇怪,它应该把输出打印在 cmd.exe 上才对啊。
冷静一下。
第二感觉是,这台电脑上 P4V 是不是安装得有问题。
看,人通常都会首先去寻找外部缘由。
回到自己的电脑上,同样的操作来一遍,诶嘿!可以正常执行命令行。
心里一万匹「黑骏」马驰过。
着手「解决」
征得同事同意,我开始在他的电脑上折腾起来。
卸载重装 P4V,有问题。
重启电脑,还是有问题。
就差砸键盘了。
对比环境差异,线索渐浮
经过半小时的无谓「解决」,终于,我留意到了他 C 盘 Perforce 的安装目录。
P4V 的默认安装目录是 C:\Program Files\Perforce。
可以看到,当事人 p4.exe 也在这里。
对,从上文的视频中可以看到,一闪而过的就是它 —— p4.exe !
于是,聚焦在 p4.exe 的调查上。
通过多方对比发现,在同事的电脑上,p4.exe 的 icon 上有一个 UAC 盾牌标志。
而我的 exe 没有。
难道是 UAC 引起的?
何为 UAC 可以点击阅读原文了解。
我把目光放在了 UAC 上面。
首先,确定同事的 UAC 档位。
在「更改用户账户设置」中,看到档位是最低档。
好像不对劲儿,过去我一度以为,UAC 设为最低档时,盾牌图标就会消失,并且原可执行文件就可以被任意用户随便运行。
但事实并非如此!
转念一想,难道是 cmd.exe 有什么特别的设定?
使得运行 exe 时会弹出新窗口执行?
应该也不是。
因为在 cmd.exe 中执行其他可执行程序是可以完美输出结果的。
大胆尝试
我突然有个想法。
把同事的 p4.exe 的盾牌弄没了会怎么样?会不会好呢?
我在同事的 E 盘上创建了一个新文件夹 p4bin,然后把同事的 p4.exe 复制一份到此文件夹。
可以发现,在 E:\p4bin 中新的 p4.exe,没有 UAC 盾牌标志。
继续实践。
为了确保 P4 命令行执行时对应于新的 p4.exe,我把路径 E:\p4bin 添加到环境变量,并将原 C 盘下的 p4.exe 删除。
一切准备就绪。
在 P4V 重新 右键-Open Command Line Here,运行 P4 命令。
奇迹出现。
P4 命令行的输出成功显示在 cmd.exe 中。
cmd 中那闪动的光标,不再是疑难问题之迷雾,而是问鼎泰山之欣喜。
后记
在此之前,我从来没有想到 UAC 与 P4 能有关联,并影响到最正常不过的操作。
记得中学时有位值得尊敬的老师跟我们讲过:
大自然中两个看似风马牛不相及的概念,往往都会存在千丝万缕的联系。
还真的是这样。
感谢阅读,祝你 2022 新年大展宏图!
-End-
你好,我是向华。
前原神项目 P4 Admin,持续集成开发者,8 年游戏测试开发工程师。
评论