Virtuellen Host anlegen mit VB

Maniac

Erfahrenes Mitglied
Hi,

Ich möchte mir ein kleines VB-Programm erstellen, mit der ich in der Windows-Hosts und in der Apache-VirtualHosts schreiben kann.

OS = Win 7

muss ich da was beachten wie z.b: Benutzerrechte?

Wie kann ich die Hosts-Datei auslesen und an gewünschter stelle einen neuen Eintrag machen? Ich hab bisher nur Ausgaben gemacht mit VB aber noch nicht in Datein schreiben...
 
Den werd ich mir auf jedenfall mal ansehen, jedoch steht in meinem Buch auch einiges womit ich aber nicht wirklich klar komme.
Habe es jetzt geschafft in die apache-Conf zu schreiben mit:

Visual Basic:
Dim Path As String = "D:\Server\Apache2\conf\extra\httpd-vhosts.conf"
            Dim HostsPath As String = "c:\windows\system32\drivers\etc\hosts"

            Dim RootDirectory As String = "D:/Server/Apache2/htdocs/"
            Dim VhostName As String = DocumentRootInput.Text

            Dim VhostWriter As New StreamWriter(Path, True)
            Dim WinHosts As New StreamWriter(HostsPath, True)

            Dim Hosttext As String
            Hosttext = "#VHOST " & VhostName & vbCrLf & _
                "<VirtualHost *:80>" & vbCrLf & _
                "   DocumentRoot """ & RootDirectory & VhostName & """" & vbCrLf & _
                "   ServerName " & VhostName & ".local" & vbCrLf & _
                "   <Directory """ & RootDirectory & VhostName & """>" & vbCrLf & _
                "       Options FollowSymLinks" & vbCrLf & _
                "       AllowOverride All" & vbCrLf & _
                "       Order deny,allow" & vbCrLf & _
                "       Allo from all" & vbCrLf & _
                "   </Directory>" & vbCrLf & _
                "</VirtualHost"

            VhostWriter.WriteLine(Hosttext)
            VhostWriter.Close()

Nun stellt sich die Frage ob ich für die Windows-Hosts besondere Berechtigungen brauche.
Normalerweise wenn das Script vom Aktuellen User ausgeführt wird und der auch die benötigen Rechte hat sollte doch nichts im Wege stehen, oder?


@ mod
Bitte Thema ins richtige Forum schieben, gehört ins VB.Net
 
@ yaslaw
Danke :)

Und genau da hab ich das Problem schon mit

Visual Basic:
Dim Daten As FileStream
            Dim Dateiname As String = HostsPath
            Dim Schreiben, Lesen As String
            Daten = New FileStream(Dateiname, FileMode.OpenOrCreate, FileAccess.Read)

            Schreiben = Daten.CanWrite
            Lesen = Daten.CanRead

            MsgBox(Schreiben)
nicht auf die Hosts-Datei zugreifen kann weil sie von einem anderen Prozess verwendet wird.
 
Verwendest du Vista/7? dann musst du dein Programm auch mit Adminrechten starten lassen, sonst wird dir der Schreibzugriff auf die Windows-Hosts-Datei verweigert (kannst du am normalen Editor sehen, ohne Adminrechte ist da nichts mit drüber speichern).


Der Doc!
 
Wie im ersten Post geschrieben verwende ich Win7.

Mein Benutzerkonto hat vollzugriff auf die windows-hosts... Es funktioniert indem ich es genauso schreibe wie in die Apache Config, jedoch weiß ich nicht wie ich es dann prüfen kann ob es geschrieben hat.

Desweiteren möchte ich gerne eine Progressbar mit einbauen, da noch eine start/stop des Apachen-Dienstes implementiert wird. Wie kann ich nun feststellen wie weit der Prozess ist, damit ich es der Progressbar übergeben kann?
 
Es ist keine Frage des Benutzerkontos, auch wenn du mit einem Admin-Konto unterwegs bist sind Programmen durch die UAC Grenzen gesetzt. Erst wenn du ein Programme als Administrator startest (entweder über deine Kompilierungseinstellungen oder über die Rechte Maustaste -> Als Administrator ausführen) hast du Vollzugriff. Das ganze merkst du, dass Windows dich beim starten wegen diesen besonderen Rechten fragt.

Betr Apache, ich hab keine Ahnung, ob das System da eine Rückmeldung über den genauen Stand der Start-/Stoppprozesses gibt, da wäre eher eine Sanduhr sinnvoll die zeigt, dass das System nicht eingefroren ist.


Der Doc!
 
Zuletzt bearbeitet:
Per Debugg im Visual Studio wird jetzt zumindest mal alles geschrieben wie ich mir das vorgestellt hatte.

Wie kann ich jetzt nich den Apachen neustarten aus dem Programm heraus?

mit
Visual Basic:
Sub (....)
     Shell("D:\Server\Apache2\bin\httpd.exe -k restart", vbHide)
End Sub

Bleibt der Dienst so wie er ist...
 
Apache restart wäre gelöst, diesen habe ich mit

Visual Basic:
Shell("D:\Server\Apache2\bin\httpd.exe -w -n Apache2.2-Zend -k restart")
gelöst.

Nun habe ich ztotz kompilierungseinstellungen der UAC
Code:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
keine Berechtigung (trotz "ausführen als administrator") um in die Windows-Hosts zu schreiben.
 

Neue Beiträge

Zurück