C#, Datei auf Desktop kopieren, umbenennen, ausführen?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Was soll die Variable code sein? Du hast die Datei doch vorher mit der Variable Name verschoben?!

Der Code ist leider total unübersichtlich formatiert.

Abgesehen davon ist es ungünstig eine Variable File zu nennen, wenn File bereits eine Klasse in deinem Namespace ist...


verreisterNutzer  05.07.2018, 20:31

Ich werde sie morgen mal umbenennen und es dann nochmal versuchen.

0
verreisterNutzer  06.07.2018, 16:05

Hab die Variable FILE mal zu DATEI umbenannt, bringt aber nichts.

0
verreisterNutzer  06.07.2018, 17:11

Als Fehler erhalte ich:

System.IO.DirectoryNotFoundException: Ein Teil des Pfades: "Desktop\NoRecoil-R6S.exe" konnte nicht gefunden werden. 
bei System.IO._Error.WinIOError(Int32 errorCode, String maybeFullPath)
bei System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite, Boolean checkHost)
bei System.IO.File.Copy(String sourceFileName, String destFileName, Boolean overwrite)
bei NoRecoil_R6S.launcher_form.launch_button_Click(Object sender, EventArgs e) in {Pfad zum Visual-Studio-Projekt}.
0

Hallo,

versuch mal einen anderen Ordner als den Desktop.

Hatte hier bei dem kopieren schonmal Probleme das Windows das nicht wollte.

Woher ich das weiß:Berufserfahrung

Oookay..... Mir ist zwar immer noch nicht ganz klar, was zum Dalkor-ta'ar du eigentlich vorhast, aber diese Frage mit den letzten 2-3 zusammen lässt vermuten, dass du etwas in der Richtung suchst:

public class Program {
    public static void Main(string[] args) {
        string charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        
        string srcname = "NoRecoil-R6S.exe";
        string srcdir = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetAssembly(typeof(Program)).Location), "Resources");
        string srcfile = System.IO.Path.Combine(srcdir, srcname);
        
        string dstname = "";
        System.Random rng = new System.Random();
        for(int i = 0; i < 15; ++i)
            dstname += charset[rng.Next(0, charset.Length)];
        string dstdir = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Desktop);
        string dstfile = System.IO.Path.Combine(dstdir, dstname + ".exe");
        
        if(!System.IO.File.Exists(srcfile)) System.Environment.Exit(2);
        
        System.IO.File.Copy(srcfile, dstfile, true);
        System.Diagnostics.Process process = new System.Diagnostics.Process();
        process.StartInfo = new System.Diagnostics.ProcessStartInfo(dstfile);
        process.Start();
        process.WaitForExit();
    }
}

P.S.: Evtl. noch den einen oder anderen try-catch-Block zur Fehlerbehandlung dann sollte das ganze selbst unter "speziellen Bedingungen" zumindest nicht einfach abschmieren wenn was schief läuft. ^^

  1. Benenne deine Variablen anders. Halte dich an Code Conventions.
  2. Du änderst zwischendurch den Namen der Datei, die verschoben werden soll. In destFile sollte der richtige Pfad bereits enthalten sein.