CSharp - 为什么不能从WPF运行剪辑夹工具?

  显示原文与译文双语对照的内容
0 0

我创建了一个带有很多按钮的WPF窗口,其中每个按钮运行一个不同的程序。 例如运行 MS Word时,我使用了:


System.Diagnostics.Process.Start("C:Program Files (x86)Microsoft OfficeOffice14WINWORD.EXE");

但是,当我尝试运行 Windows 7截图工具时,它的工作方式不一样。 它应该是这样的:


System.Diagnostics.Process.Start("C:WindowsSystem32SnippingTool.exe");

我确定路径是正确的,但总是出现一条消息,说明文件没有找到。 我想知道为什么会发生这种情况。

重要:我使用 Windows 7 64位。

时间: 原作者:

0 0

使用这个:


//if the build platform of this app is x86 use C:windowssysnative
if(!Environment.Is64BitProcess) 
 System.Diagnostics.Process.Start("C:WindowssysnativeSnippingTool.exe");
else
 System.Diagnostics.Process.Start("C:Windowssystem32SnippingTool.exe");

问题在于构建平台( x86 ) 和 64位 操作系统上文件夹 C:WindowsSystem32的自动重定向。

基本上,对于几个原因,在 vista/Windows 7 64位 操作系统中,当 32位应用程序试图访问 C:WindowsSystem32 时,它会自动重定向到名为 C:WindowsSysWOW64的文件夹。 因此,不能启动 snippingtool.exe,因为它不存在于该文件夹中。

唯一的方法是使用 C:Windowssysnative 并绕过重定向。

原作者:
0 0

我的心理调试器告诉我你正在在 64位 版本的Windows 上运行 32位 程序,因此你对 %WINDIR% ( C:Windows )的调用实际上正在被路由到 C:WindowsSysWOW64

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

原作者:
0 0

你应该使用环境变量。 你可能正在将它运行在 64位系统上,而 C:WindowsSystem32 正在重定向。

原作者:
...