Salve a tutti!

Giorni fa ho cominciato a scrivere un programma da "distribuire" ai miei utenti, con funzione di registrazione/login. Portando avanti il progetto, sono stato costretto a realizzare un installer che un installer non è: ho sfruttato tutte le classi che avrei potuto usare per creare e scrivere i file. Il problema sta in una fase dell'installazione... comincio da principio:

- Creo tre file .phx (mia estensione, letta come .txt), e scrivo su uno di essi. "logged.phx" per far sì che il programma possa capire se il login è stato fatto o meno, "user.phx" contenente i dati inseriti alla registrazione, "lpath.phx" contenete la "directory di lavoro" del programma. Scrivo solo sull'ultimo dei tre...

codice:
Imports System.IO.File

Dim name1 As String = "logged.phx"
Dim name2 As String = "user.phx"
Dim name3 As String = "lpath.phx"

'Scrivo la parte di codice interessata
TextBox1.Text = TextBox1.Text & vbCrLf & "Creo file: " & name1
            Create(name1)
            TextBox1.Text = TextBox1.Text & vbCrLf & "Creo file: " & name2
            Create(name2)
            TextBox1.Text = TextBox1.Text & vbCrLf & "Creo file: " & name3
            Create(name3)

Dim writer As New IO.StreamWriter("lpath.phx")
            writer.Write(Environment.CurrentDirectory)
            writer.Close()
Ok, il codice dà errore in questa riga:
codice:
Dim writer As New IO.StreamWriter("lpath.phx")
"File già in uso da un altro processo."

Da quale processo può mai essere usato? Non ci sono altri StreamWriter, quindi il rischio che ve ne sia uno già aperto non c'è. Allego anche il codice per intero, magari il problema sta altrove...

codice:
Imports System.IO.File
Public Class Form2
    Dim time As Integer = 10 'Variabile per un countdown
    Dim time2 As Integer = 1 'Vedi il commento su
    Dim name1 As String = "logged.phx"
    Dim name2 As String = "user.phx"
    Dim name3 As String = "lpath.phx"
    Dim path As String

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick 
        time = time - 1
        Label2.Text = time
        If time = 0 Then
            Label2.Text = ""
            Label1.Text = "Installazione avviata."
            Timer1.Stop()
            'Uso il timer per fare l'installazione...
            If Form1.TextBox1.Text = "C:\Users\" & Environment.UserName & "\COD_Wii_Clans" Then
                TextBox1.Text = TextBox1.Text & vbCrLf & "Imposto cartella di lavoro: " & "C:\Users\" & Environment.UserName
                Environment.CurrentDirectory = "C:\Users\" & Environment.UserName
            End If
            TextBox1.Text = TextBox1.Text & vbCrLf & "Imposto cartella di lavoro: " & Form1.TextBox1.Text
            Environment.CurrentDirectory = Form1.TextBox1.Text
            TextBox1.Text = TextBox1.Text & vbCrLf & "Creo directory: " & Form1.TextBox1.Text
            MkDir(Form1.TextBox1.Text & "\COD_Wii_Clans")
            Environment.CurrentDirectory = Form1.TextBox1.Text & "\COD_Wii_Clans"
            path = Form1.TextBox1.Text & "\COD_Wii_Clans"
            TextBox1.Text = TextBox1.Text & vbCrLf & "Creo file: " & name1
            Create(name1)
            TextBox1.Text = TextBox1.Text & vbCrLf & "Creo file: " & name2
            Create(name2)
            TextBox1.Text = TextBox1.Text & vbCrLf & "Creo file: " & name3
            Create(name3)
            FileClose() 'Tento di chiudere tutti i processi in modo bruto, niente da fare. 
            TextBox1.Text = TextBox1.Text & vbCrLf & "Definisco files precedentemente creati..."
            TextBox1.Text = TextBox1.Text & vbCrLf & "Scarico eseguibile e librerie correlate..."
            Timer2.Start()
            Reset() 'Tento di chiudere tutti i processi in modo bruto, niente da fare. 
        End If
    End Sub


    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Start()
    End Sub

    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        time2 = time2 - 1
        If time2 = 0 Then
            Timer2.Stop()
            Reset() 'Tento di chiudere tutti i processi in modo bruto, niente da fare. 

            Dim writer As New IO.StreamWriter("lpath.phx")
            writer.Write(Environment.CurrentDirectory)
            writer.Close()
            My.Computer.Network.DownloadFile("http://phoenixstyle.altervista.org/Call_of_Duty_Wii_Clan/COD_Wii_Clans.exe", path & "\COD_Wii_Clans1.0a2.exe")

        End If
    End Sub
End Class
Suggerimenti? Grazie anticipatamente per eventuali risposte!