Wie bekomme ich den hash der aktuellen .exe-Datei?
[GELÖST]: ich kopierte die Datei und ran an die hasher auf dieser Kopie.
Muss ich meine app zu finden, die EXE-Datei der aktuellen MD5. Ich kann mit der MD5 von jeder Datei.
Jedoch, egal was ich mache, ich Schaffe es nicht, ein FileStream Lesen Sie die EXE-Datei öffnen. Ich habe versucht, mit FileOptions.Asynchrone aber das hat nicht geholfen.
EDIT: ich denke, ich bin nicht sehr klar. Ich möchte, dass meine app in der Lage sein, sich selbst zu Lesen.
BEARBEITEN von code:
private void GetMd5()
{
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
FileInfo fi = new FileInfo(Process.GetCurrentProcess().MainModule.FileName);
FileStream stream = File.Create(Process.GetCurrentProcess().MainModule.FileName, (int)fi.Length, FileOptions.Asynchronous);
md5.ComputeHash(stream);
stream.Close();
string rtrn = "";
for (int i = 0; i < md5.Hash.Length; i++)
{
rtrn += (md5.Hash[i].ToString("x2"));
}
MessageBox.Show(rtrn.ToUpper());
}
- Eröffnung Ihres eigenen Ausführung von EXE-scheint wie etwas, das nicht funktionieren kann, aber ich habe noch nie als, bevor, so kann ich nicht sicher sagen. Haben Sie überlegt, ob Sie sich eine temporäre Kopie der EXE und ausführen der hash auf, das anstelle?
- Danke!!! Dieser arbeitete. Ich verwendete Datei.Kopieren nach %temp% ein, und es lief auf das.
- Es sollte wirklich nicht notwendig sein, um die Datei zu kopieren. Es sollte nur eine Frage der öffnung mit der richtigen access-Modus. (Wenn es kopiert werden kann, kann es Lesen.)
- Sie sollten akzeptieren, eine Antwort oder schreiben Sie Ihre eigenen Antwort, und es akzeptieren, markieren Sie die Frage als beantwortet.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Datei.Create Methode (String, Int32, FileOptions, FileSecurity):
Ich bin ziemlich sicher, dass ist nicht das, was Sie zu tun beabsichtigte. Vermutlich wollen Sie FileInfo.Methode Open (FileMode, FileAccess):
Ändern:
FileStream stream = File.Create(path, (int)fi.Length, FileOptions.Asynchronous);
zuFileStream stream = File.Open(path, FileMode.Open);
Bisschen spät, um der Partei, aber vor kurzem wurde versucht, diese selbst zu tun. In .NET 4.5 das folgende funktioniert ganz gut, ohne die Notwendigkeit für eine temporäre Kopie. Wie gesagt, wenn man Lesen kann, die Datei zu kopieren, können Sie Lesen Sie die Datei zum generieren einer hash für Sie.
Da habe ich versucht, diese Antworten und fand, dass keiner von Ihnen ändern sich jedes Bearbeiten der exe zu ändern, oder überhaupt, ich etwas gefunden, das tatsächlich funktioniert.
Habe ich nicht editieren code hier, all dies wurde von der genannten Seite unten.
Referenz: http://www.vcskicks.com/self-hashing.php
Jeder test scheint korrekt ausgegeben. Ich würde jedem empfehlen, dies sah, diese Klasse zu benutzen, oder etwas daraus zu machen.