小编RBD*_*Dev的帖子

从大文件中检索版本信息

我们有大型可执行文件(> 1,2 GB),其中包含自定义版本信息.我尝试使用'FileVersionInfo'类的'GetVersionInfo'从这些文件中检索此"版本信息".由于某些原因,此方法不会返回Windows XP中较大文件(测试> 1 GB)的版本信息.它适用于大小为18 MB的文件.当我在Windows 7(x86和X64)中尝试相同时,它适用于所有文件,甚至更大的onces!

我使用了一个Reflector工具来查看FileVersionInfo类,我创建了一个小型控制台应用程序来检索'File Version Info'-Size,就像'GetVersionInfo'方法一样.在Windows XP中返回大小0(零),在Windows 7中,对于相同的文件返回大小为1428的大小.XP中的最后一个错误是1812('指定的图像文件不包含资源部分').

这在Windows XP中不起作用并且在Windows 7中有效的原因是什么?是否有解决版本信息的工作?

在我测试过的代码下面:

class Program
{
    [DllImport("version.dll", BestFitMapping = false, CharSet = CharSet.Auto, SetLastError = true)]
    public static extern int GetFileVersionInfoSize(string lptstrFilename, out int handle);

    static void Main(string[] args)
    {
        Console.Write("Path which contains the executables: ");
        string path = Console.ReadLine();

        foreach (string fileName in Directory.EnumerateFiles(path))
        {
            int num;
            int fileVersionInfoSize = GetFileVersionInfoSize(fileName, out num);
            int error = Marshal.GetLastWin32Error();

            Console.WriteLine("File Version Info Size: " + fileVersionInfoSize);

            if …
Run Code Online (Sandbox Code Playgroud)

.net c#

7
推荐指数
1
解决办法
482
查看次数

标签 统计

.net ×1

c# ×1