
방금 새로운 SteelSeries 마우스를 구입했습니다. "SnippingTool.exe"를 실행하기 위해 프로그램 버튼 6을 시도하고 있습니다.
SnippingTool.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\SnippingTool.exe"와 "C:\Windows\SoftwareDistribution\Download\"의 하위 폴더에 있는 것으로 보입니다. 소프트웨어 배포 폴더는 아마도 임시 파일용인 것으로 보아 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 디렉토리 목록에 표시됩니다. 특별한 속성 없이. 그러나 실제로 파일 선택기에서 파일을 선택할 수 없으며 Windows를 우회하고 NTFS 파일 시스템을 구문 분석하는 "Everything" 앱이 해당 파일이 거기에 없다고 말합니다. 파일의 실제 위치에 대한 모든 증거는 Windows가 나에게 말하려는 것과 모순되는 것 같습니다.
문제에 대한 더 많은 통찰력을 제공하는 해결 방법
c:\windows\system32\SnippingTool.exe에서 파일을 실행하기 위해 래퍼 콘솔 응용 프로그램을 만들려고 했지만 처음에는 실패했습니다. 예를 들어 호출만 하는 C# 콘솔 앱을 빌드하면 System.Diagnostics.Process.Start("c:\\windows\\system32\\SnippingTool.exe");
"시스템이 System.Diagnostics.Process.StartWithShellExecuteEx에 지정된 파일을 찾을 수 없습니다."라는 오류가 발생합니다. 따라서 이는 이 파일이 Explorer에서 말하는 위치에 실제로 위치하지 않는다는 생각을 뒷받침합니다. WindowsKey+R(실행) 대화 상자에 동일한 경로를 붙여넣으면 문제가 없습니다. 따라서 Explorer, cmd.exe, Windows 실행 대화 상자는 모두 이 파일이 존재하는 것처럼 작동하도록 공모하지만 파일에 직접 액세스하려는 시도는 실제로 존재하지 않는 것으로 드러납니다.
파일을 직접 실행하는 대신 다음과 같이 경로를 explorer.exe에 인수로 전달하여 오류 없이 간접적으로 실행할 수 있었습니다.System.Diagnostics.Process.Start(new ProcessStartInfo() { UseShellExecute = false, FileName = "c:\\windows\\explorer.exe", Arguments = "c:\\windows\\system32\\SnippingTool.exe" });