Eigendlich ist es doch immer das gleiche:
Die header der response angucken und prüfen ob "Content-Disposition" vorhanden ist.
Wenn vorhanden: Dateinamen aus dem wert des headers auslesen: Z.B. sollte die zweite gruppe des matches von folgendem regex den dateinamen enthalten (ignorecase setzen): "(|;) *filename *=([;]+)"
Wenn so kein dateiname gefunden wurde, dann ist der dateiname der teil von HttpWebResponse.ResponseUri.AbsolutePath, der nach dem letzten schrägstrich kommt.
Bei mir geht es auch mit den dlls.
Allerdings führe ich den shadowrunner auch nicht im anwendungsverzeichnis aus, daran ligt es wahrscheinlich. Ich gucks mir später genauer an.
Klare Antwort: Jain
Man kann direkte Verbindungen über das Internet herstellen, wenn auf beiden Computern gleichzeitig ein geeignetes Programm läuft und
Du musst also in jedem Falle einen Weg haben, wie der eine Computer die Addresse des anderen bekommt.
Wenn kein Router/Firewall im Weg ist:
Das einfachste aber für den Benutzer unfreundlichste ist es, den Benutzer die IPs herausfinden zu lassen. Ansonsten kann man soetwas wie dyndns einsetzen. Alternativ kann man irgendwo auf einem Webspace eine Datei oder ein Script platzieren.
Erschweren ist möglich, aber ganz verhindern kann man es nicht.
Ich bin zwar kein profi in sowas, aber so würde ich an die sache rangehen:
1.) Seite mittels browser komplett auf der platte speichern
3.) http://jsbeautifier.org/
2 ) Texteditor mit syntax-highlighting nehmen und variablennamen erraten+ersetzen
4.) Firebug und bei bedarf evl noch Wireshark
5.) Geduld
Du könnetst auch einen blick auf http://jsunpack.jeek.org/ riskieren. ansonsten: Google
Hab das für n kleines Projekt mit etlichen Dateien, die ins Ausgabeverzeichnis kopiert werden gemacht. So nach dem Motto: Mal eben schnell Erstellen drücken (um die Dateien neu zu kopieren), aktualisieren und gucken, wies aussieht, wenn der Knopf unten rechts 5 Pixel schmaler ist. Problem is blolß, dass das normalerweise fehlschlägt, solange das Programm läuft.
man muss also das Programmm schon vorher anders starten, falls mans evtl. überschreiben mag?
Ja, es wird das Ladeprogramm gelockt, anstatt des eigendlichen Programms.
Wer kennt das nicht: Man will mal schnell ne Exe überschreiben oder löschen, ohne gleich das dazugehörige Programm zu beenden.
Desahlb habe ich mal ein kleines Programm zusammengehackt, welches eine Exe samt Dlls mittels Assembly.Load(byte[]) lädt und dann ausführt. Der erste Parameter ist die zu ladende Exe-datei, danach folgen die zu übergebenden Parameter.
MIT-Lizenz
Mit WPF-Anwendungen gibts anscheinend Probleme beim Laden von Resourcen.
Vielleicht kanns ja trotzdem jemand gebrauchen^^ Wer das Konsolenfenster loswerden will, der kann einfach in den Projekteigenschaften auf Windows-Anwendung umstellen.
[EDIT] Jetzt auch auf youtube YouTube: Wissenschaftsjournalistischer Unsinn über Wasser
Grade auf 3sat in nano gesehen:
Mein bauchgefühl sagt mir , dass es probleme mit unsafe/unmanaged code und falschen speicherzufriffen sein könnten.
Wenn die Daten an einem stück liegen ist das sicherleich die beste möglichkeit, aber wenn (wovon ich ausgegangen bin) die daten in mehreren häppchen fragmentiert sind, dann wird das sehr schnell sehr unhandlich.