通过为正在安装的软件创建MD5哈希并将其与验证软件的MD5哈希进行比较,我正在创建一个Windows服务,用于检查系统上安装的软件的完整性。验证的散列包含在如下所示的XML文件中:
<AppList>
<VLC>
<Path>C:Program Files\VLC\VLC.exe</Path>
<MD5GoldenHash> 1f74882b7a5c8a6ca38912df9786c1cc</MD5GoldenHash>
</VLC>
…
</AppList>
如何使用MD5GoldenHash标记读取c#中的所有数据,以便将正在安装的软件的MD5哈希与已验证的哈希进行比较?如有任何帮助或建议,将不胜感激。
发布于 2017-05-23 19:50:24
我发现我可以读取特定标签的数据,并将其放在如下列表中:
private List<string> getGoldenHashes(string xml)
{
List<string> list = new List<string>();
int i = 0;
XDocument doc = XDocument.Load(xml);
var goldHashes = doc.Descendants("MD5GoldenHash");
foreach (var gh in goldHashes)
{
list.Add(gh.Value.ToString());
}
return list;
}
发布于 2017-05-23 00:52:59
XmlSerializer
反序列化XML文件的内容。下面是步骤1将为您生成的类:
/// <remarks/>
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public partial class AppList
{
private AppListVLC[] vLCField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("VLC")]
public AppListVLC[] VLC
{
get
{
return this.vLCField;
}
set
{
this.vLCField = value;
}
}
}
/// <remarks/>
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class AppListVLC
{
private string pathField;
private string mD5GoldenHashField;
/// <remarks/>
public string Path
{
get
{
return this.pathField;
}
set
{
this.pathField = value;
}
}
/// <remarks/>
public string MD5GoldenHash
{
get
{
return this.mD5GoldenHashField;
}
set
{
this.mD5GoldenHashField = value;
}
}
}
下面是如何序列化和反序列化:
public static void Main()
{
var serializer = new XmlSerializer(typeof(AppList));
var reader = new StreamReader("YourFile.xml");
var result = serializer.Deserialize(reader) as AppList;
reader.Close();
foreach (var thisVlc in result.VLC)
{
Console.WriteLine(thisVlc.MD5GoldenHash);
}
// if you want to make changes to xml file then do the following
result.VLC[0].MD5GoldenHash = "Something to show modificaition";
serializer.Serialize(new StreamWriter("YourFileOrSomeOtherFile.xml"), result);
}
https://stackoverflow.com/questions/44124040
复制相似问题