
我剛剛買了一個新的 SteelSeries 滑鼠。我正在嘗試按程式按鈕 6 啟動“SnippingTool.exe”。
截圖工具.exe出現位於“C:\windows\system32\SnippingTool.exe”,或至少它以這種方式顯示在 Windows 資源管理器中。
但是,在 SteelSeries Engine 3 的檔案選擇器中,該資料夾不包含任何此類檔案。
此外,索引 NTFS 檔案系統的「Everything」應用程式僅顯示兩個 SnippingTool.exe 文件,且都不在 C:\windows\system32 中。相反,它似乎位於“C:\Windows\WinSxS\amd64_microsoft-windows-snippingtool-app_31bf3856ad364e35_10.0.17134.1_none_7f448e86f2cd59cc\Sstrwarevpown.Windows軟體分發資料夾可能是用於臨時檔案的,因此我猜測 WinSxS(Windows Side by Side)資料夾中的檔案是實際啟動的檔案。
事情變得更加離奇。如果我從開始功能表或 system32 位置啟動 SnippingTool.exe 並在 TaskManager 詳細資料中查看它的檔案系統位置,它會顯示「c:\windows\system32」。同時,如果我將按鈕 6 指派給 WinSxS 位置,則嘗試透過按鈕 6 啟動它只會關注正在運行的 SnippingTool.exe 實例,因此它似乎認為這是同一個應用程式。但是,如果我在 SnippingTool 啟動時使用按鈕 6 啟動它不是已經運行,然後我只是得到這個空白的錯誤對話框,其圖示是截圖工具的圖示:
任何人都可以解釋這種奇怪的行為,或者為什麼只有這樣的文件出現位於「c:\windows\system32」?根據此信息,該文件的實際位置在哪裡?我認為它可能是一個檔案系統符號鏈接,但 cmd.exe 或 junction64.exe(來自 Microsoft)都沒有表明它具有任何此類屬性。
Windows 似乎費了很大的勁才讓我認為這個文件存在於 c:\windows\system32 並且不是任何類型的符號鏈接或連接...它顯示在資源管理器中的 cmd.exe 目錄列表中沒有任何特殊屬性。但是,我實際上無法在文件選擇器中選擇該文件,並且我的“Everything”應用程式繞過 Windows 並解析 NTFS 文件系統,說它不位於那裡。該文件實際位置的所有證據似乎都與 Windows 試圖告訴我的內容相矛盾。
提供對問題更深入了解的解決方法
我嘗試創建一個包裝控制台應用程式來啟動 c:\windows\system32\SnippingTool.exe 中的文件,但一開始並不成功。例如,如果我建立一個僅呼叫的 C# 控制台應用程序,System.Diagnostics.Process.Start("c:\\windows\\system32\\SnippingTool.exe");
則會拋出錯誤「系統找不到 System.Diagnostics.Process.StartWithShellExecuteEx 指定的檔案」。因此,這支持了這個文件實際上並不位於資源管理器所說的位置的想法。在 WindowsKey+R(運行)對話方塊中貼上相同的路徑效果很好。因此,不知何故,資源管理器、cmd.exe、Windows 運行對話框都合謀表現得好像該文件存在一樣,但任何直接訪問該文件的嘗試都表明它實際上並不存在。
我沒有直接啟動該文件,而是透過將路徑作為參數傳遞給 explorer.exe 來間接啟動它,不會出現錯誤,如下所示:System.Diagnostics.Process.Start(new ProcessStartInfo() { UseShellExecute = false, FileName = "c:\\windows\\explorer.exe", Arguments = "c:\\windows\\system32\\SnippingTool.exe" });