微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

文件被复制到SysWOW64而不是System32

我的应用程序运行时必须将psTool实用程序复制到System32文件夹。

我在64位Windows 7上,每当我尝试通过File.copy将exe复制到system32位文件夹时,exe总是被复制到SysWow64。

当我在destFile上放置一个断点时,path显示为C:WindowsSystem32但文件不会进入(进入sysWow64)。 我已经尝试了Special Folder SystemX86 ,但文件再次进入sysWOW64。

string sourceFile = "C:binDebugsomexe.exe" string destFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System),utilityName); File.copy(sourceFile,destFile,true);

任何build议我在这里失踪?

编辑

build立.NET COMInterop项目,而不先注册COM服务

如何显示Windowslogin对话框?

HTTP状态:在.net浏览器控件中的12002

是否有Windows错误报告的.Net API

在Linux上运行ASP Classic和.NET

正如答案中所指出的那样,正在发生文件系统redirect。 我正在使用64位操作系统上的控制台应用程序的Visual Studio认设置开发应用程序。 我不确定在编译时必须保留哪些设置/开关,以便应用程序可以在32位和64位操作系统上运行。

基本上,它应该只是设置将文件复制到System32而不pipe它是什么位的操作系统。

在后面的程序中,我必须通过命令行访问psTools实用程序,如果将其放在SysWOW64中,命令行不可用。 如果我进行更改,要使用SysWOW64的32位cmd.exe,这将再次是64位平台特定的,我不想select。

任何解决scheme,可以使应用程序运行在32位和64位没有问题? 我是否必须修改代码(如何?)还是必须修改此控制台应用程序项目的某些属性(哪些属性)?

从控制台进程读取

VC ++ MFC在不久的将来会过时吗?

.NET Bitmap.Load方法在不同的计算机上产生不同的结果

validationWindows用户名/密码为具有pipe理权限

Windows如何决定是否触发MouseUp或Click?

你已经违反了文件系统重定向

因为%windir%system32专门用于64位应用程序,所以在64位版本的Windows上,尝试访问%windir%system32目录的32位应用程序会自动并透明地重定向到32位%windir%sysWOW64目录。

首先,确保你的程序确实属于64位系统文件夹 。 Windows做这个自动重定向的原因。 32位的东西不会在64位版本的Windows上的%windir%system32文件夹中

如果您确定要将东西复制到64位系统目录中,则有几个选项。 最简单的方法就是把你的工具编译成一个64位的应用程序。 或者,您可以通过使用%windir%sysnative而不是%windir%system32来告诉WOW64重定向程序您知道自己在做什么而不执行重定向

我有同样的问题。 解决方案是在Visual Studio的项目属性中将“平台目标”设置为x64或Anycpu而不是x86。 在这种情况下,路径将是"C:Windowssystem32"并且不会重定向到"C:WindowsSysWOW64"您可以通过将任何文件放在“C: Windows SysWOW64”文件夹中,然后使用File.Exists命令检查是否在该文件夹中找到文件

File.Exists(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System),sFileName));

要么

File.Exists(Path.Combine(Environment.SystemDirectory,sFileName));

我在我的32位应用程序中总是返回本机system32文件夹使用助手属性。 帮手属性是:

public static string NativeSystemPath { get { if (Environment.Is64BitOperatingSystem) { return System.IO.Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.Windows),"Sysnative"); } return Environment.GetFolderPath(Environment.SpecialFolder.System); } }

由于path environnement变量在Windows x86 / x64版本上都包含c:windows ,为什么不把工具放到c:windows : %windir% ?

在我的情况下,这解决了我的问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐