問題
我最近總是會收到如標題所述的問題,於是我決定是時候從我的私人工具包中拿出些東西了。(這其
中還包括為一些程式設計師準備的小知識)
第一個問題:當你登入後,一個類似於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來為某個檔案或者目錄來設定某種語言下的名字。
總結系統不會在開機的時候隨機啟動一個程式,如果它恰巧會,則應該是由某種原因導致的。