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); }
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); }
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; }
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; }