电子说
第一个问题:当你登录后,一个类似于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来为某个文件或者目录来设置某种语言下的名字。
总结
系统不会在开机的时候随机启动一个程序,如果它恰巧会,则应该是由某种原因导致的。
全部0条评论
快来发表一下你的评论吧 !