首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

问题

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

第一个问题:当你登录后,一个类似于C:\Program Files\LitWare的目录会自动打开

原因:你的系统里存在两个相邻的目录,其中一个是另一个的严格前缀,例如下面的两个目录:C:\Program Files\LitWareC:\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:\Programcommand line=Files\LitWare Deluxe\reminder.exe因为上面的路径是无效的,所以系统会使用如下解析方式进行重试:app = C:\Program Files\LitWarecommand 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来为某个文件或者目录来设置某种语言下的名字。

总结

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200116A0V7TP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券