Visual Basic 2013 Fehler: Der Prozess kann nicht auf die Datei zugreifen
Hallo
Ich erkläre euch mal was mein Programm tun soll.
Ich mache ein Login Tool welches anhand Einstellungen (welche man im Skript ändern kann) Netzlaufwerke mappen soll.
Auf der Form1.vb ist das Anmeldefenster mit Benutzername und Passwort Eingabe. Wenn man auf dieser Form auf einen Knopf drückt öffnet sich settings.vb welches ein Anpassungsfenster sein soll. In dem kann man Textbox weise Netzwerkbuchstabe, Servername und Freigabepfad eintragen.
Jetzt ist es so das wenn das Main geladet wird, sprich form1.vb soll eine kleine überprüfung stadtfinden und zwar diese
Dim var_pfad_textfile = "C:\Users\Public\Login tool\domain.txt"
Dim var_pfad_laufwerk = "C:\Users\Public\Login tool\laufwerk.txt"
Dim var_pfad_server = "C:\Users\Public\Login tool\server.txt"
Dim var_pfad_pfad = "C:\Users\Public\Login tool\pfad.txt"
If System.IO.Directory.Exists("C:\Users\Public\Login tool") = False Then
System.IO.Directory.CreateDirectory("C:\Users\Public\Login tool")
End If
'notwendige Dateien erstellen, falls nicht existiert
If System.IO.File.Exists(var_pfad_textfile) = False Then
System.IO.File.Create(var_pfad_textfile)
End If
If System.IO.File.Exists(var_pfad_laufwerk) = False Then
System.IO.File.Create(var_pfad_laufwerk)
End If
If System.IO.File.Exists(var_pfad_pfad) = False Then
System.IO.File.Create(var_pfad_pfad)
End If
If System.IO.File.Exists(var_pfad_server) = False Then
System.IO.File.Create(var_pfad_server)
End If
Das ist für die Erstellung des Config Ordners und der Textfile indem die Datensätze aus settings.vb gespeichert werden sollen.
Das klappt wunderbar.
Weiter soll es wenn ich in der Vergangenheit was eingetragen habe soll es wenn ich settings.vb öffne diese bereits eintragen (das ich nicht immer alles nochmals Schreiben muss)
Der Befehl zum aus settings.vb in die Textfiles zu schreiben sieht jeweils so aus.
Dim Daten_Speichern_l As IO.StreamWriter = New IO.StreamWriter("C:\Users\Public\Login tool\laufwerk.txt") 'Hier beim Pfad kommt euer Speicherort der Textdatei rein WICHTIG! Den Namen mit .txt nicht vergessen
Daten_Speichern_l.WriteLine(lb_01.Text)
Daten_Speichern_l.WriteLine(lb_02.Text)
Daten_Speichern_l.WriteLine(lb_03.Text)
lb_01,lb_02 und lb_03 ist das Feld mit dem Laufwerkbuchstabe.
Das gleiche mit dem Servernamen:
Dim Daten_Speichern_s As IO.StreamWriter = New IO.StreamWriter("C:\Users\Public\Login tool\server.txt")
Daten_Speichern_s.WriteLine(sn_1.Text)
Daten_Speichern_s.WriteLine(sn_2.Text)
Daten_Speichern_s.WriteLine(sn_3.Text)
Feld für Servername.
Und für den Pfad
Dim Daten_Speichern_3 As IO.StreamWriter = New IO.StreamWriter("C:\Users\Public\Login tool\pfad.txt")
Daten_Speichern_3.WriteLine(fp_1.Text)
Daten_Speichern_3.WriteLine(fp_2.Text)
Daten_Speichern_3.WriteLine(fp_3.Text)
Der Befehl um aus den Textdateien jeweils zu lesen lautet für alle 3 so:
Dim var_pfad_laufwerk = "C:\Users\Public\Login tool\laufwerk.txt"
Dim Daten_Lesen_elaufwerk() As String = IO.File.ReadAllLines(var_pfad_laufwerk) 'Hier ist der Speicherort der Textdatei
lb_01.Text = Daten_Lesen_elaufwerk(0) 'Die erste Zeile ist 0
lb_02.Text = Daten_Lesen_elaufwerk(1)
lb_03.Text = Daten_Lesen_elaufwerk(2)
Das Problem ist folgendes:
Immer beim 1. Ausführen des Skriptes werden ja die Ordner und Textdateien erstellt. Das Funktioniert. Danach öffne ich die Settings und Schreibe die Daten ein. Wenn ich es schließe und nochmals öffne sollten ja alle Daten welche ich bereits rein geschrieben habe da sein. Falsch.
Wenn ich in die Textdateien reinschaue ist da nichts drin.
Der Fehler ist das, dass Programm gar nicht reinschreiben kann weil es von einem anderen Prozess verwendet wird.
Das komische ist, wenn die Ordner bereits existieren also das Skript keine erstellen muss klappt alles.
Ich gehe davon aus das etwas mit dem erstellen Befehl falsch ist..
Kann mit jemand helfen?
Für Fragen zum Programm bin ich offen.
Gruass
Ich erkläre euch mal was mein Programm tun soll.
Ich mache ein Login Tool welches anhand Einstellungen (welche man im Skript ändern kann) Netzlaufwerke mappen soll.
Auf der Form1.vb ist das Anmeldefenster mit Benutzername und Passwort Eingabe. Wenn man auf dieser Form auf einen Knopf drückt öffnet sich settings.vb welches ein Anpassungsfenster sein soll. In dem kann man Textbox weise Netzwerkbuchstabe, Servername und Freigabepfad eintragen.
Jetzt ist es so das wenn das Main geladet wird, sprich form1.vb soll eine kleine überprüfung stadtfinden und zwar diese
Dim var_pfad_textfile = "C:\Users\Public\Login tool\domain.txt"
Dim var_pfad_laufwerk = "C:\Users\Public\Login tool\laufwerk.txt"
Dim var_pfad_server = "C:\Users\Public\Login tool\server.txt"
Dim var_pfad_pfad = "C:\Users\Public\Login tool\pfad.txt"
If System.IO.Directory.Exists("C:\Users\Public\Login tool") = False Then
System.IO.Directory.CreateDirectory("C:\Users\Public\Login tool")
End If
'notwendige Dateien erstellen, falls nicht existiert
If System.IO.File.Exists(var_pfad_textfile) = False Then
System.IO.File.Create(var_pfad_textfile)
End If
If System.IO.File.Exists(var_pfad_laufwerk) = False Then
System.IO.File.Create(var_pfad_laufwerk)
End If
If System.IO.File.Exists(var_pfad_pfad) = False Then
System.IO.File.Create(var_pfad_pfad)
End If
If System.IO.File.Exists(var_pfad_server) = False Then
System.IO.File.Create(var_pfad_server)
End If
Das ist für die Erstellung des Config Ordners und der Textfile indem die Datensätze aus settings.vb gespeichert werden sollen.
Das klappt wunderbar.
Weiter soll es wenn ich in der Vergangenheit was eingetragen habe soll es wenn ich settings.vb öffne diese bereits eintragen (das ich nicht immer alles nochmals Schreiben muss)
Der Befehl zum aus settings.vb in die Textfiles zu schreiben sieht jeweils so aus.
Dim Daten_Speichern_l As IO.StreamWriter = New IO.StreamWriter("C:\Users\Public\Login tool\laufwerk.txt") 'Hier beim Pfad kommt euer Speicherort der Textdatei rein WICHTIG! Den Namen mit .txt nicht vergessen
Daten_Speichern_l.WriteLine(lb_01.Text)
Daten_Speichern_l.WriteLine(lb_02.Text)
Daten_Speichern_l.WriteLine(lb_03.Text)
lb_01,lb_02 und lb_03 ist das Feld mit dem Laufwerkbuchstabe.
Das gleiche mit dem Servernamen:
Dim Daten_Speichern_s As IO.StreamWriter = New IO.StreamWriter("C:\Users\Public\Login tool\server.txt")
Daten_Speichern_s.WriteLine(sn_1.Text)
Daten_Speichern_s.WriteLine(sn_2.Text)
Daten_Speichern_s.WriteLine(sn_3.Text)
Feld für Servername.
Und für den Pfad
Dim Daten_Speichern_3 As IO.StreamWriter = New IO.StreamWriter("C:\Users\Public\Login tool\pfad.txt")
Daten_Speichern_3.WriteLine(fp_1.Text)
Daten_Speichern_3.WriteLine(fp_2.Text)
Daten_Speichern_3.WriteLine(fp_3.Text)
Der Befehl um aus den Textdateien jeweils zu lesen lautet für alle 3 so:
Dim var_pfad_laufwerk = "C:\Users\Public\Login tool\laufwerk.txt"
Dim Daten_Lesen_elaufwerk() As String = IO.File.ReadAllLines(var_pfad_laufwerk) 'Hier ist der Speicherort der Textdatei
lb_01.Text = Daten_Lesen_elaufwerk(0) 'Die erste Zeile ist 0
lb_02.Text = Daten_Lesen_elaufwerk(1)
lb_03.Text = Daten_Lesen_elaufwerk(2)
Das Problem ist folgendes:
Immer beim 1. Ausführen des Skriptes werden ja die Ordner und Textdateien erstellt. Das Funktioniert. Danach öffne ich die Settings und Schreibe die Daten ein. Wenn ich es schließe und nochmals öffne sollten ja alle Daten welche ich bereits rein geschrieben habe da sein. Falsch.
Wenn ich in die Textdateien reinschaue ist da nichts drin.
Der Fehler ist das, dass Programm gar nicht reinschreiben kann weil es von einem anderen Prozess verwendet wird.
Das komische ist, wenn die Ordner bereits existieren also das Skript keine erstellen muss klappt alles.
Ich gehe davon aus das etwas mit dem erstellen Befehl falsch ist..
Kann mit jemand helfen?
Für Fragen zum Programm bin ich offen.
Gruass
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 268475
Url: https://administrator.de/contentid/268475
Ausgedruckt am: 08.11.2024 um 21:11 Uhr
5 Kommentare
Neuester Kommentar
Zitat von @playmen:
sorry, Ich wollte nicht alles einfügen um Platz zu sparen aber in meinem Programm schließe ich den Stream auch mit dem
Befehl welchen du mir gesendet hast.
Moin,sorry, Ich wollte nicht alles einfügen um Platz zu sparen aber in meinem Programm schließe ich den Stream auch mit dem
Befehl welchen du mir gesendet hast.
dann poste doch bitte mal komplett, sonst können wir uns hier nen Wurm raten was du sonst noch machst wo dein Fehler liegen könnte ...
Gruß jodel32
p.s. Der Debugger ist dein Freund !
Zitat von @playmen:
ich musste .Dispose() am ende des Befehles "System.IO.Directory.CreateDirectory("C:\Users\Public\Login tool")"
anfügen
Ja nee, dafür gibt's using dann kommt sowas gar nicht erst vor ich musste .Dispose() am ende des Befehles "System.IO.Directory.CreateDirectory("C:\Users\Public\Login tool")"
anfügen
https://msdn.microsoft.com/de-de/library/htd05whh.aspx
Und für den Streamwriter muss vorher kein File existieren, der erzeugt das File selber wenn es nicht vorhanden ist.