文件被复制到SysWOW64而不是System32
我的应用程序运行时,我必须将psTool实用程序复制到System32文件夹。
我使用的是64位Windows 7,每当尝试通过exe将exe复制到system32位文件夹时File.Copy
,exe始终会复制到SysWow64。
当我在destFile上放置一个断点时,路径显示为,C:\Windows\System32
但文件没有进入该路径(进入sysWow64)。我已经尝试过Special
FolderSystemX86
,但是文件再次转到sysWOW64。
string sourceFile = "C:\bin\Debug\somexe.exe"string destFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), utilityName);
File.Copy(sourceFile, destFile, true);
有什么建议我在这里想念吗?
如下面答案中所指出的,正在发生文件系统重定向。我正在使用64位OS上的控制台应用程序使用Visual
Studio的默认设置开发该应用程序。我不确定在编译时必须保留哪些设置/开关,以便该应用程序可同时在32位和64位OS上运行。
基本上,它应该只将文件复制设置为,System32
无论它是什么操作系统。
在程序的更高版本中,我必须通过命令行访问psTools实用程序,如果将其放在SysWOW64中将不可用。如果要进行更改,以使用SysWOW64的32位cmd.exe,这又将是特定于64位平台的,我不想选择。
有什么解决方案可以使应用程序同时在32位和64位上运行而不会出现问题?我必须修改代码(如何?)还是必须修改此控制台应用程序项目的某些属性(哪些属性)?
回答:
您已经违反了文件系统重定向。
因为%windir%\System32
是专门为64位应用程序保留的,所以在64位版本的Windows上,尝试访问该%windir%\System32
目录的32位应用程序将自动透明地重定向到32位%windir%\SysWOW64
目录。
首先,请确保您的程序 确实属于64位系统文件夹 。Windows执行此自动重定向是有原因的。
。
如果您确定要将内容复制到64位系统目录中,则有两种选择。最简单的方法可能是将实用程序编译为64位应用程序。或者,您可以通过使用%windir%\Sysnative
代替来告诉WOW64重定向器您知道自己在做什么,并且不执行重定向%windir%\System32
。
以上是 文件被复制到SysWOW64而不是System32 的全部内容, 来源链接: utcz.com/qa/434051.html