

死机重启以后给我弹这个,第一次遇到
1 kkk9 2023-08-29 16:48:12 +08:00 Program File Program File (x86) 系统盘下最好只存在这两个,其他的 Program 同名文件夹 容易导致意外发生 |
2 SHF 2023-08-29 19:09:48 +08:00 这是什么历史遗留问题吗? |
3 KagurazakaNyaa 2023-08-29 19:12:57 +08:00 @SHF 可能是会影响 8.3 文件名 |
4 kkkbbb 2023-08-29 19:18:11 +08:00 什么版本? |
5 bjzhou1990 OP @kkkbbb win11 |
6 webcape233 2023-08-29 19:30:25 +08:00 via iPhone 是的,所以我用 apps |
7 f14g 2023-08-29 19:45:58 +08:00 via Android 我都是用/Opt |
8 m0yBPjyX3475syS4 2023-08-29 19:52:55 +08:00 学 macOS ,创建 C:\Applications\ |
9 a282810 2023-08-29 19:55:02 +08:00 我一台好久没有使用的 win10 老笔记本上次开机也提示这个,直接点"忽略"好像没什么问题 |
10 vituralfuture 2023-08-29 19:58:06 +08:00 via Android 不懂就问,为什么 Program 可能导致意外发生? |
11 cnbatch 2023-08-29 21:14:51 +08:00 折衷解决办法:使用英式英语 Programme 只要别手贱把系统语言切换成德语或法语就没事,因为 Program Files 在德语会显示成 Programme ,在法语则是 Programmes 。然后可能会有软链接指向 Program Files 。 切换成英式英语(国际英语)反而没事,因为英式英语的 Windows 照样沿用 Program Files ,不会变成 Programme Files 可参考这份总结: https://www.samlogic.net/articles/program-files-folder-different-languages.htm |
12 darkengine 2023-08-29 21:19:21 +08:00 @cnbatch 那为啥不改成 Chengxu ... |
14 cnbatch 2023-08-29 21:53:10 +08:00 @darkengine 因为只需要在原文件名后方补字母就行,比较接近 OP 习惯OP 主动使用的是“Pogram”而不是 Chengxu |
15 iseki 2023-08-29 22:59:01 +08:00 via Android Windows 这不错啊,对这种东西还有提示 |
16 lovelylain 2023-08-29 23:06:51 +08:00 via Android 我习惯用 Programs ,避免空格,按上面说的 8.3 文件这个也不会和 Program 冲突 |
17 tyzandhr 2023-08-29 23:10:23 +08:00 via Android 为什么不命名为中文 程序文件 |
18 Ocean810975 2023-08-29 23:35:22 +08:00 via Android @vituralfuture 这应该和早期 windows 系统的一个设计理念相关,与类 Unix 系统不同的,Windows 鼓励用户在文件名中使用空格。 为了强制使开发人员适应这个特性,Windows 将程序运行关键的文件夹 program files 加上空格, |
19 qeqv 2023-08-30 00:21:34 +08:00 @Ocean810975 不管什么系统,文件名里有空格我看着都很不舒服-- |
20 ulosggs 2023-08-30 00:36:54 +08:00 都没说到重点。 Windows 可以用 Progra~1 表示以 Progra 打头的文件夹,很多脚本为了避免使用空格会硬编码 Progra~1 代替 Program Files 。你现在建一个 Program 的文件夹,那些脚本全得挂掉。 |
21 geelaw 2023-08-30 00:37:46 +08:00 via iPhone @XiLingHost #3 Program 的 8.3 文件名是 PROGRAM ,会出问题是因为很多 Windows 软件没有正确处理空格,在调用 API 的时候把命令行设置为 C:\Program Files\abc\def.exe xyz 按照正统理解,这是在打开 C:\Program 并传入参数 Files\abc\def.exe 和 xyz ,但是现实世界里意思大概是打开 C:\Program Files\abc\def.exe 并传入参数 xyz 。 为了兼容这种情况,Windows 会尝试修复首个命令没有被 " 包围的命令行,方法是从左到右尝试寻找最短的以空白分开的串,满足这个串代表的路径存在着文件,然后把需要打开的文件理解为这个串,剩下的理解为传入的参数。 读者习题:以上面的坏例子,解释为什么存在着 C:\Program 文件可能会让一些程序坏掉。 此处应该记住的是永远要正确转义命令行,文件名可以包含空格。 |
22 geelaw 2023-08-30 00:50:26 +08:00 via iPhone @Ocean810975 #18 应该也不是很早期,因为 8.3 格式的名字里不能有空格。 @ulosggs #20 这个理解比较片面。首先,分区的文件系统可以选择不支持短文件名,也可以通过注册表关闭短文件名的生成。如果一个名字已经符合 8.3 的要求,就只会转换为大写作为短文件名。另外短文件名和创建顺序有关,第一个以 PROGRA 开头的无扩展名长文件名在 Windows 的常见实现里会得到 PROGRA~1 这个短文件名,第二个则是 PROGRA~2 ,更更多的情况还有更复杂的命名方法( Windows 上的常见实现大概会有四位 hex 之类的),还有在短文件名已经生成后建立长文件名等于已经存在的短文件名的情况。PROGRA~1 只能表示某个特定的文件,不能表示所有以 Progra 开头的长文件名文件。 最后,使用 PROGRA~1 表示 Program Files 的程序不应该被理解为“不想处理空格”,这实在是太美化它们了,更好的理解是 自从 Windows 3.3 以来就没更新过的程序,或者 写得很糟糕的程序,或者 忘了声明自己是 Windows 95 之后开发的程序 在现代文件系统里存储短文件名只是为了兼容上个世纪的程序,不是允许新程序逃避现实。 |
23 lostberryzz 2023-08-30 00:56:40 +08:00 难道你没发现 C:\Program Files 是复数形式么,就是要建,也是 C:\Programs 啊 |
24 vvhy 2023-08-30 01:14:03 +08:00 woc ,我用了 C:\Programs |
25 datou 2023-08-30 01:41:35 +08:00 dos fat 时代的 8.3 遗祸吧? 到现在微软都要抛弃 ntfs 了都还没解决掉? |
26 Jirajine 2023-08-30 02:36:07 +08:00 via Android @geelaw #21 Windows 为什么要兼容这种这种情况?没有正确处理空格的程序,在开发人员的设备上就应该直接出错。这种自作聪明的“尝试修复”是非常糟糕的做法。 |
27 geelaw 2023-08-30 02:57:28 +08:00 via iPhone @Jirajine #28 很明显是为了避免《微软公司升级系统故意让某公司软件不能运行,我们要抵制微软、反垄断》这类文章。有些开发者的电脑上路径没有空格,且很多开发者有自己机器上测试的坏习惯正确的测试方法是在一台全新安装的 Windows 机器上测试(可以检查出很多“只有开发环境下才能运行”的 bug )。 另外,Windows NT 4.0 的时候用户资料默认位置是 C:\WINNT\Profiles\用户名,而 Windows XP 里面默认位置是 C:\Documents and Settings\用户名,所以即使一开始在全新安装的 Windows 上测试过程序也不代表就会在以后的默认安装上成功当然那个程序已开始没处理过空格就是错的。 我也不喜欢这种设计,因为某些程序自始至终就不是正确的,但这类程序就是很多,从 DOS 和 Unix 来的程序经常这样。 扩展阅读:搜索 8.3 names site:devblogs.microsoft.com/oldnewthing 以及把 8.3 改成 short 搜索。 |
28 resu 2023-08-30 08:42:27 +08:00 C 盘 D 盘常年驻扎自建的 Programs 从无故障 |
29 abc0123xyz 2023-08-30 09:18:29 +08:00 我用 c:\an_de_cheng_xu |
30 rb6221 2023-08-30 10:51:05 +08:00 我是 apps 、myApps 、bigApps 这样命名的 |
31 YCCD 2023-08-30 12:41:20 +08:00 C:\ProgramFiles 没出过问题,很方便, 安装其他软件时把默认路径“C:\Program Files”的空格删了就行了 |
32 usedTo404 2023-08-30 13:02:26 +08:00 @webcape233 我用 C:\App\ |
33 yulgang 2023-08-30 13:03:22 +08:00 我很久以前也遇到过一次这个提示,忘记怎么处理的了,你试试 chkdsk /x /f c: 然后重启直到检查完 C 盘进入登录界面看看。 |