Exemplo n.º 1
0
        public FileVersionInfo GetFileVersionInfo()
        {
            var resources   = GetResources();
            var versionNode = ResourceNode.GetChild(ResourceNode.GetChild(resources, "Version"), "1");

            if (versionNode == null)
            {
                return(null);
            }
            if (!versionNode.IsLeaf && versionNode.Children.Count == 1)
            {
                versionNode = versionNode.Children[0];
            }


            var   buff  = AllocBuff();
            byte *bytes = versionNode.FetchData(0, versionNode.DataLength, buff);
            var   ret   = new FileVersionInfo(bytes, versionNode.DataLength);

            FreeBuff(buff);
            return(ret);
        }
Exemplo n.º 2
0
        public string GetRT_MANIFEST()
        {
            var resources = GetResources();
            var manifest  = ResourceNode.GetChild(ResourceNode.GetChild(resources, "RT_MANIFEST"), "1");

            if (manifest == null)
            {
                return(null);
            }
            if (!manifest.IsLeaf && manifest.Children.Count == 1)
            {
                manifest = manifest.Children[0];
            }

            var    buff  = AllocBuff();
            byte * bytes = manifest.FetchData(0, manifest.DataLength, buff);
            string ret   = null;

            using (var stream = new UnmanagedMemoryStream(bytes, manifest.DataLength))
                using (var textReader = new StreamReader(stream))
                    ret = textReader.ReadToEnd();
            FreeBuff(buff);
            return(ret);
        }
Exemplo n.º 3
0
 static public ResourceNode GetChild(ResourceNode node, string name)
 {
     if (node == null)
         return null;
     foreach (var child in node.Children)
         if (child.Name == name)
             return child;
     return null;
 }
Exemplo n.º 4
0
 public ResourceNode GetResources()
 {
     if (Header.ResourceDirectory.VirtualAddress == 0 || Header.ResourceDirectory.Size < sizeof(IMAGE_RESOURCE_DIRECTORY))
         return null;
     var ret = new ResourceNode("", Header.FileOffsetOfResources, this, false, true);
     return ret;
 }