Eine .htuser oder .htaccess als reine Textdatei unter Windows 10 mit visual-basic speichern.

Raabun

Mitglied
Hallo Leute,
unter Windows 7 konnte ich mit folgenden Code:
Visual Basic:
   Dim pfad As String = KonfSys.konf_system(2).pfad
        Dim file_name As String = pfad & ".htusers"

        Dim anz As Integer = user.Length
        Dim i As Long
        err = 0
        Try
            Dim fi As FileInfo = New FileInfo(file_name)
            If fi.Exists Then
                fi.CopyTo(pfad & "htusers:TXT", True)
                fi.Delete()
            End If
            ...
         Catch ex as Exception

Ein .htuser oder ein .htaccess File kopieren.
Unter Windows 10 bekomme ich eine "Zugriffsverweigerung" Was tun?
Gruß
Raabun
 

ComFreek

Mod | @comfreek
Moderator
Warum ist da ein Doppelpunkt bei "htusers:TXT". Sind Doppelpunkte ein Dateinamen unter Windows erlaubt?
 

Raabun

Mitglied
Ich hasse die Caps-Lock-Taste :mad: Die Datei soll natürlich htusers.txt heißen.
Ich speicher zur Zeit die Datei .htusers/.htaccess in einem eigenem Backup-Ordner (ohne Typänderung, das geht)
Bei dem Zurückschreiben in den alten Code für diese Anfrage kam es zum Fehler. Seit 2004 lief der alte Code, halt bis Windows 10.
Gruß
Raabun
 

Raabun

Mitglied
Nein, bei allen Windowsversionen inkl Windows7 (außer NT, Vista und Windows 8, die ich nicht getestet habe) funktioniert der Code mit htusers.txt (Ursprung war 2004).
Nur bei Windows 10 bekomme ich den Fehler, wenn ich den Tp der Datei ändere (von .htusers auf htusers.txt)
Der Doppelpunkt :)TXT) war ein Schreibfehler beim Erstellen der Anfrage. Als Code wurde die Endung so nie verwendet.
Gruß
Raabun
 

ComFreek

Mod | @comfreek
Moderator
Das ist sehr komisch. Ich weiß, dass der Windows Explorer dich nicht so einfach Dateien ohne Namen (also nur Endung ".htusers") erstellen lässt*. Aber ich hätte gedacht, dass das nicht in der Windows API durchgesetzt wird.

Kannst du vielleicht in einem frischen neuen Projekt testen, ob du Dateien mit solchen Dateinamen erstellen kannst?

*) siehe auch How do I manually create a file with a . (dot) prefix in Windows? For example, .htaccess.
 

Raabun

Mitglied
Ich kann .htusers und .htaccess erstellen. Die Dateien sind ja garnicht mal so unüblich und dienen der Zugangskontrolle von HTML-Webseiten. Ich kann auch htusers.txt oder htaccess.txt erstellen. Was mir nur nicht mehr gelingt ist das Ändern einer .htusers Datei in eine htusers.txt Datei. Beides sind reine ASCII-Textdateien ohne jegliches Bohei wie utf etc.
Dein Link beschreibt den Vorgang ganz gut. Nur hatte früher .net mir den Trara mit " dann wird die Datei unbrauchbar" etc erspart und es mir überlassen damit zu leben. Was gut ging, da die "Unbrauchbarkeit" der neuen Datei mir recht war, da sie nur ein Backup für mich sein sollte, falls da mal einer der User Mist gebaut hat.

Gruß
Raabun
 

ComFreek

Mod | @comfreek
Moderator
Kannst du die Datei manuell mit dem Explorer denn umbenennen? Irgendwie bezweifel ich, dass es tatsächlich am Punkt liegt. Ich denke, die bestehende (?) .htusers hat bestimmte Zugriffsrechte gesetzt bekommen -- von woher auch immer.
 

Spyke

Premium-User
Bei mir gehts, es muss, denke ich, an den Berechtigungen des Ordners liegen auf den du zugreifen willst.
Vielleicht wurde da was geändert.

Gib mal die genaue Fehlermeldung.
 

Raabun

Mitglied
Hallo Leute,
noch einmal der Code, der zur Zeit auf Windows10 fehlerfrei läuft. Auch öfters hintereinander.
ComFreak, wie Du siehst kann ich die Datei .htusers anlegen, copieren, löschen und überschreiben. Nur den Typ kann ich nicht ändern. Die Abfragen von Windows werden, meines Wissens nach, durch das "TRUE" im CopyTo-Befehl abgehandelt.

Allgemeine Frage: Gibt es eine Art der Berechtigung, die das Umbenennen verbietet, wenn ich die Datei anlegen, löschen und überschreiben kann?

Gruß
Raabun

Visual Basic:
 Private Sub create_htusers(ByVal user() As CL_User, ByRef err As Long)
        Dim pfad As String = KonfSys.konf_system(2).pfad
        Dim file_name As String = pfad & ".htusers"

        Dim anz As Integer = user.Length
        Dim i As Long
        err = 0
        Try
            Dim fi As FileInfo = New FileInfo(file_name)
            If fi.Exists Then
                fi.CopyTo(pfad & "Backup\.htusers", True)
                fi.Delete()
            End If

            fi = New FileInfo(file_name)
            Using w As StreamWriter = File.AppendText(file_name)
                w.Write("# Benutzerdatei fuer Web-Projekt:" & ControlChars.CrLf)
                w.Write("# Sie wird automatisch erzeugt, nicht aendern" & ControlChars.CrLf)
                For i = 0 To anz - 1
                    WriteUser(user(i), w)
                Next

                ' Close the writer and underlying file.
                w.Close()
            End Using
        Catch ex As Exception
            SystemFileHandling.LogData("create_htusers: " & ex.Message, start.konsole, start.konsole, CL_Error.ERR_SYSTEM_BUILD_USERS)
            err = -1
        End Try


    End Sub