代码之家  ›  专栏  ›  技术社区  ›  Teoman shipahi

系统找不到指定的文件-Winforms/snipingtool[duplicate]

  •  0
  • Teoman shipahi  · 技术社区  · 7 年前

    我创建了很多不同的窗口按钮。例如,为了运行MS-Word,我使用了:

    System.Diagnostics.Process.Start("C:\\Program Files (x86)\\Microsoft Office\\Office14\\WINWORD.EXE");
    

    System.Diagnostics.Process.Start("C:\\Windows\\System32\\SnippingTool.exe");
    

    我确定路径是正确的,但是总是显示一条消息,说找不到文件。我想知道为什么会这样。

    重要提示:我使用Windows7 64位。

    0 回复  |  直到 13 年前
        1
  •  10
  •   digEmAll    13 年前

    使用这个:

    // if the build platform of this app is x86 use C:\windows\sysnative
    if(!Environment.Is64BitProcess) 
       System.Diagnostics.Process.Start("C:\\Windows\\sysnative\\SnippingTool.exe");
    else
       System.Diagnostics.Process.Start("C:\\Windows\\system32\\SnippingTool.exe");
    

    问题出在您的构建平台(x86)和文件夹的自动重定向中 C:\Windows\System32\ 在64位操作系统上。

    基本上,有几个原因,在vista/windows7中,当32位应用程序试图访问 C: \ Windows\系统32\ 它会自动重定向到名为 C:\Windows\SysWOW64\ . 因此,你不能开始 snippingtool.exe 因为它不在那个文件夹中。

    唯一的办法就是 C:\Windows\sysnative\

        2
  •  3
  •   Ed Swangren    13 年前

    我的通灵调试器告诉我你正在64位版本的 %WINDIR% ( C:\Windows C:\Windows\SysWOW64 .

    使用环境变量,而不是硬编码目录路径,这些路径可能根据环境和/或Windows版本而移动。。

        3
  •  2
  •   Daniel A. White    13 年前

    您应该改用环境变量。你可能在64位系统上运行 C:\Windows\System32\