得到它了。Windows文件系统的行为会有所不同,具体取决于过程的体系结构。此文章解释了这一切 -尤其是:
但是,对系统路径进行了硬编码并在64位Windows中运行的32位应用程序呢?您可能会想,他们如何在不更改程序代码的情况下找到新的SysWOW64文件夹。答案是,仿真器透明地将对System32文件夹的调用重定向到SysWOW64文件夹,因此,即使该文件夹被硬编码到System32文件夹(例如C:
Windows
System32),仿真器也将确保使用SysWOW64文件夹代替。因此,可以将使用System32文件夹的相同源代码编译为32位和64位程序代码,而无需进行任何更改。
尝试复制
calc.exe到其他地方…然后再次运行相同的工具。您将获得与Java相同的结果。 一些
有关Windows文件系统给不同的数据比它给到Java的工具......我敢肯定,这是与它在Windows目录之中,因此很可能处理“不同”。
此外,我用C#复制了它,发现它取决于 您正在运行的流程 的 体系结构 。所以这是一个示例程序:
using System;using System.IO;using System.Security.Cryptography;class Test{ static void Main() { using (var md5 = MD5.Create()) { string path = "c:/Windows/System32/Calc.exe"; var bytes = md5.ComputeHash(File.ReadAllBytes(path)); Console.WriteLine(BitConverter.ToString(bytes)); } }}
这是一个控制台会话(减去来自编译器的聊天):
c:usersjonTest>csc /platform:x86 Test.csc:usersjonTest>test60-B7-C0-FE-AD-45-F2-06-6E-5B-80-5A-91-F4-F0-FCc:usersjonTest>csc /platform:x64 Test.csc:usersjonTest>test10-E4-A1-D2-13-2C-CB-5C-67-59-F0-38-CD-B6-F3-C9
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)