Hallo,
ich habe aktuell ein Problem was mich zur Verzweiflung bringt. Ich starte einen CMD Process welchen ich Befehle übergebe. Den Output der CMD hole ich mir async aus einen Handler und übergebe diesen. Ich bekomme auch alles schön zurück, aber im falschen Encoding. hat jemand eine Idee? Wahrscheinlich ist es nur was kleines. Hier ist aber erstmal der Code:
Das ist die Funktion welche die CMD mit den Paramenten und co. aufruft:
Das ist der Handler welcher den StringBuilder befüllt:
outLine.Data gibt mir Fragezeichen anstatt Sonderzeichen zurück. Ich habe auch schon versucht die Encodings zu konvertieren, aber alles ohne Erfolg.
hier ist noch der Code womit ich die Function aufrufe:
Vielen Dank vorab
ich habe aktuell ein Problem was mich zur Verzweiflung bringt. Ich starte einen CMD Process welchen ich Befehle übergebe. Den Output der CMD hole ich mir async aus einen Handler und übergebe diesen. Ich bekomme auch alles schön zurück, aber im falschen Encoding. hat jemand eine Idee? Wahrscheinlich ist es nur was kleines. Hier ist aber erstmal der Code:
Das ist die Funktion welche die CMD mit den Paramenten und co. aufruft:
VB.NET-Quellcode
-
- Public processOutput As New StringBuilder
- Public Function RunCMDWithOutput(Pfad As String, command As String, arguments As String, permanent As Boolean)
- Dim RootDSE As New DirectoryServices.DirectoryEntry("LDAP://RootDSE")
- Dim DomainDN As String = RootDSE.Properties("DefaultNamingContext").Value
- Dim p As Process = New Process()
- Dim pi As ProcessStartInfo = New ProcessStartInfo()
- pi.Arguments = " " + If(permanent = True, "/K", "/C") + " " + command + " " + Pfad + " " + arguments
- pi.WorkingDirectory = "C:\Windows\System32"
- pi.FileName = "cmd.exe"
- pi.WindowStyle = ProcessWindowStyle.Hidden
- pi.CreateNoWindow = True
- pi.RedirectStandardOutput = True
- pi.StandardOutputEncoding = Encoding.UTF8
- Try
- Dim mystr As String = "ActiveDirectoryName\" & GUI.Benutzername
- Dim cut_at As String = "\"
- Dim x As Integer = InStr(mystr, cut_at)
- Dim string_after As String = mystr.Substring(x + cut_at.Length - 1)
- Dim mystr2 As String = DomainDN
- Dim cut_at2 As String = "DC="
- Dim x2 As Integer = InStr(mystr2, cut_at2)
- Dim string_after2 As String = mystr2.Substring(x2 + cut_at2.Length - 1)
- Dim s2 As String = string_after2
- Dim first2 As String
- Dim Index2 As String
- Index2 = s2.IndexOf("DC=")
- first2 = s2.Substring(0, Index2 - 1)
- pi.UserName = string_after & "@" & first2
- pi.PasswordInClearText = Decrypt(GUI.Passwort, GUI.PrivateKey)
- pi.UseShellExecute = False
- p.StartInfo = pi
- AddHandler p.OutputDataReceived, AddressOf OutputHandler
- p.Start()
- p.BeginOutputReadLine()
- p.WaitForExit()
- Application.DoEvents()
- If p.HasExited Then
- Return True
- End If
- Catch ex As Exception
- MsgBox(ex.Message)
- Return False
- End Try
- End Function
Das ist der Handler welcher den StringBuilder befüllt:
VB.NET-Quellcode
outLine.Data gibt mir Fragezeichen anstatt Sonderzeichen zurück. Ich habe auch schon versucht die Encodings zu konvertieren, aber alles ohne Erfolg.
hier ist noch der Code womit ich die Function aufrufe:
Vielen Dank vorab