gpt4 book ai didi

c# - 文件被复制到 SysWOW64 而不是 System32

转载 作者:IT王子 更新时间:2023-10-29 04:53:22 29 4
gpt4 key购买 nike

当我的应用程序运行时,我必须将 psTool 实用程序复制到 System32 文件夹。
我在 64 位 Windows 7 上,每当我尝试通过 File.Copy 将 exe 复制到 system32 位文件夹时,exe 总是被复制到 SysWow64。

当我在 destFile 上放置断点时,路径显示为 C:\Windows\System32 但文件不会进入那里(进入 sysWow64)。我尝试了 Special Folder SystemX86,但文件再次转到 sysWOW64。

string sourceFile = "C:\bin\Debug\somexe.exe"
string destFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), utilityName);
File.Copy(sourceFile, destFile, true);

有什么我在这里遗漏的建议吗?

编辑

正如下面的回答所指出的,文件系统重定向正在发生。我正在使用 Visual Studio 的默认设置为 64 位操作系统上的控制台应用程序开发应用程序。我不确定在编译时必须保留哪些设置/开关,以便应用程序可以在 32 位和 64 位操作系统上运行。
基本上,它应该只将文件复制到 System32 而不管它是什么位操作系统。
在程序的后面,我必须通过命令行访问 psTools 实用程序,如果我将它放在 SysWOW64 中,则该实用程序不可用。如果我进行更改,使用 SysWOW64 的 32 位 cmd.exe,这将再次成为特定于 64 位平台的东西,我不想选择它。

有什么解决方案可以让应用程序在 32 位和 64 位上都正常运行?我是否必须修改代码(如何?)或者我是否必须修改此控制台应用程序项目的某些属性(哪些属性)?

最佳答案

您与 file system redirection 发生冲突.

因为 %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 重定向器您知道自己在做什么而不执行重定向.

关于c# - 文件被复制到 SysWOW64 而不是 System32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10100390/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com