Als aller aller erstes: Warum VB2010?
Der beste Zeitpunkt auf etwas zeitgemäßes umzusteigen ist am besten schon gestern gewesen.
Lad dir Visual Studio Community runter und steig am besten auf C# 6.0 mit .net Framework 4.6 um.
Mit VB wirst du auf dauer nicht glücklich, da geb ich dir Brief und Siegel drauf.
Solltest du das in Erwägung ziehen, kann ich dir einen Lösungsansatz geben:
Es sei gesagt, dein String mit den Daten als Zeichen ist ganz großer unfung. Daten als HexString zu speichern ist ziemlich bad practice und sollte unter keinen Umständen gemacht werden. In Zukunft solltest du in hinblick auf Speicherverbrauch und Performance binäre Daten immer in einem Bytearray ablegen. Außerdem kann auch keine einzige Funktion im .net Framework mit einem String der Daten in Hexadezimaler Form enthält, etwas anfangen.
Deshalb ist an dieser Stelle Schritt 1, aus dem String ein Bytearray zu erzeugen. Am einfachsten dürfte dies mit Linq gehen:
Code:
String hexData = "080000080000080000200000200000";
byte[] data = Enumerable.Range(0, hexData.Length)//Generiert Zahlen 0 -30
.Where(x => x % 2 == 0) //Mit den Zahlen 0, 2, 4, 6, 8...
.Select(x => Convert.ToByte(hexData.Substring(x, 2), 16))//Nimm 2 Zeichen an dieser Position und wandle in ein byte um
.ToArray();//Als Array zurückgeben
Als nächstes öffnest du deine Datei, damit du einen Stream hast, den du lesen und beschreiben kannst. Dabei nicht vergessen, als dritten Parameter FileAccess.ReadWrite anzugeben, damit du auch Schreibrechte auf die Datei hast.
Code:
FileStream fs = File.Open(@"C:\dein\pfad\zur\date.E1T", System.IO.FileMode.Open, FileAccess.ReadWrite);
Da es die meisten Dateisysteme nicht erlauben mitten in eine Datei zu schreiben, musst du erstmal die ersten 0x20290 Bytes auslesen, um dieser nachher wieder schreiben zu können.
Code:
byte[] firstFileBytes = new byte[0x20290]; //Bytearray initialisieren
fs.Read(firstFileBytes, 0, firstFileBytes.Length);//Aus der Datei ins Bytearray lesen
fs.Position = 0; //Die Position im Stream wieder auf Anfang setzen
Als nächstes hängst du an die ausgelesenen Bytes, deine zu schreibenden Bytes. Dies macht man ebenfalls am einfachsten mit Linq
Code:
byte[] newFirstFileBytes = firstFileBytes.Concat(data).ToArray();
Und zuletzt einfach die neuen Daten in die Datei schreiben und nicht vergessen den Stream ordentlich zu schließen.
Code:
fs.Write(newFirstFileBytes, 0, newFirstFileBytes.Length);
fs.Dispose();
Natürlich gibts hier und da noch möglichkeiten, das ein wenig performanter zu gestalten, aber für den Anfang sollte das die Lösung sein, mit der man mit den wenigsten Zeilen zum gewünschten Ergebnis kommt.
edit: Natürlich kannst du dir auch die Dokumentation von meinen Befehlen ansehen, dort ist meistens neben C# auch der korrekte VB Befehl aufgelistet. Ich denke meine Befehle lassen sich auch mehr oder weniger einfach nach VB migrieren