SnippingTool.exe не находится там, где кажется?
Я только что купил новую мышь SteelSeries. Я пытаюсь запустить программную кнопку 6"SnippingTool.exe ".
SnippingTool.exe , по-видимому, находится по адресу"C:windowssystem32SnippingTool.exe "или, по крайней мере, это отображается в проводнике Windows таким образом.
Однако в средстве выбора файлов для SteelSeries Engine 3 эта папка не содержит такого файла.
Кроме того, приложение "Все", которое индексирует файл NTFS система показывает только два SnippingTool.exe файлы, и ни один из них не находится в C:windowssystem32 . Вместо этого он, по-видимому, расположен по адресу "C:WindowsWinSxSamd64_microsoft-windows-snippingtool-app_31bf3856ad364e35_10.0.17134.1_none_7f448e86f2cd59ccSnippingTool.exe "а также подпапка"C:WindowsSoftwareDistributionDownload ". Папка распространения программного обеспечения, вероятно, предназначена для временных файлов, поэтому я предполагаю, что файл в папке WinSxS (Windows Side by Side) - это тот, который на самом деле запущенный.
Это становится еще более странным. Если я запущу SnippingTool.exe из меню "Пуск" или расположения system32 и посмотрите на расположение файловой системы в деталях TaskManager, оно показывает"c:windowssystem32 ". Между тем, если я назначу кнопку 6 местоположению WinSxS, то попытка запустить ее с помощью кнопки 6 просто фокусируется на запущенном экземпляре SnippingTool.exe , так что, похоже, он думает, что это одно и то же приложение. Однако, если я запущу его с помощью кнопки 6, когда SnippingTool уже не запуск, затем я просто получаю это пустое диалоговое окно с ошибкой, значок которого является значком инструмента обрезки:
Может ли кто-нибудь объяснить это странное поведение или почему такой файл только кажется расположенным по адресу"c:windowssystem32 "? Основываясь на этой информации, где на самом деле находится файл? Я думал, что это может быть символическая ссылка на файловую систему, но ни cmd.exe или junction64.exe (от Microsoft) укажите, что у него есть какой-либо такой атрибут.
Windows, похоже, собирается много хлопот, чтобы заставить меня думать, что этот файл существует по адресу c:windowssystem32 и не является какой-либо символической ссылкой или соединением... он отображается там в проводнике в cmd.exe список реж. без каких-либо специальных атрибутов. Однако на самом деле я не могу выбрать файл в средстве выбора файлов, и мое приложение "Все", которое обходит Windows и анализирует файловую систему NTFS, говорит, что его там нет. Все доказательства фактического местоположения файла, похоже, противоречат тому, что пытается сказать Windows я.
Обходной путь, который обеспечивает более глубокое понимание проблемы
Я попытался создать консольное приложение-оболочку для запуска файла по адресу c:windowssystem32SnippingTool.exe, что поначалу не увенчалось успехом. Например, если я создаю консольное приложение C#, которое просто вызывает System.Diagnostics.Process.Start("c:\windows\system32\SnippingTool.exe");
, оно выдает ошибку "Система не может найти файл, указанный в System.Диагностика.Процесс.Начните с ShellExecuteEx". Таким образом, это подтверждает идею о том, что этот файл на самом деле находится не там, где говорит Проводник is. Вставка того же пути в диалоговое окно 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" });