为什么当我登录的时候,总有一些文件会被打开

为什么当我登录的时候,总有一些文件会被打开

作者:BlogUpdater |  时间:2020-01-16 |  浏览:124 |  评论已关闭 条评论

问题
我最近总是会收到如标题所述的问题,于是我决定是时候从我的私人工具包中拿出些东西了。(这其中还包括为一些程序员准备的小知识)

第一个问题:当你登录后,一个类似于C:\Program Files\LitWare的目录会自动打开
原因:你的系统里存在两个相邻的目录,其中一个是另一个的严格前缀,例如下面的两个目录:
C:\Program Files\LitWare
C:\Program Files\LitWare Deluxe

如果你去注册表看看,你就会发现在HKEY_LOCAL_MACHINE\Microsoft\Windows\CurrentVersion\Run或者HKEY_CURRENT_USER\Microsoft\Windows\CurrentVersion\Run下面会有这么一个条目指向一个很长的目录路径,类似于下面的:
Reminder=REG_SZ:C:\Program Files\LitWare Deluxe\reminder.exe

而且,你会发现,上面的路径中没有引号来保护嵌入在路径中的空格。
这个会导致一个结果:LitWare Deluxe希望开机时自动启动C:\Program Files\LitWareDeluxe\reminder.exe。
但是,因为空格的原因,注册表条目第一次被解析为:
app = C:\Program
command line=Files\LitWare Deluxe\reminder.exe
因为上面的路径是无效的,所以系统会使用如下解析方式进行重试:
app = C:\Program Files\LitWare
command line=Deluxe\reminder.exe

这次的解析会成功,所以你会看到开机后自动打开了C:\Program Files\LitWare的目录。
解决方法就很简答了:修改注册表中的路径,然后加上引号。

至程序员朋友:如果你的文件名或者文件路径中包含空格,请记得加上引号。

第二个问题:当你登录后,一个名为desktop.ini的文件会被打开
原因:位于C:\Documents and Settings\All Users\Start Menu\Startuppp或者C:\Documents and Settings\yourname\Start Menu\Startup中的desktop.ini文件会丢失掉系统属性和隐藏属性。你可以到资源管理器的高级选项中禁用这一选项:”Hide protected operating system files (Recommended)”。

如果一个文件被设置为系统和隐藏属性,则资源管理器将不在枚举这个文件,因此用户将不会看到它。
如果你禁用了”Hide protected operating system files”,则这个规则就不会被执行。

当你登录后,资源管理器需要做的一件事情就是枚举启动目录(Startup)中的文件并尝试运行它找到的每一个文件。如果desktop.ini没有被设置为系统和隐藏属性的话,它就会被资源管理器自动打开。

那么这个desktop.ini是干啥用的?
这个文件是用来为WinXP的多语言界面(Multilingual User Interface)提供支持的,用来实现诸如修改系统显示界面的语言的特性。例如,如果你说我想系统的显示全部变成法语的,那么Windows将会翻译系统的菜单,快捷键,对话框等为法语。这个文件将帮助Windows来翻译”Startup”为法语,德语或者西班牙语等。

至程序员朋友:你可以使用SHSetLocalizedName这个API来为某个文件或者目录来设置某种语言下的名字。

总结
系统不会在开机的时候随机启动一个程序,如果它恰巧会,则应该是由某种原因导致的。

评论已关闭。