Hallo Leute,
bin heute mal wieder mit einer Frage auf eure Hilfe angewiesen.
Ich erstelle gerade eine Applikation, welche per Befehlszeile Argumente entgegennimmt und danach dieses Argument als Datei mit Berechtigungen eines Administrators
startet. Allerdings will das "Process.start" nicht klappen.
So sieht der source aus:
Die Process.start Prozedur habe ich bereits einige Male geändert, folgendes habe ich ebenfalls ausprobiert:
(Leider ohne Erfolg)
bzw.
In jedem Fall bekomme ich als Fehlermeldung "Der Verzeichnisname ist ungültig" zurück oder "Das System kann den angegebenen Pfad nicht finden." Getestet habe ich jeweils eine .exe und eine .bat Datei die im gleichen Folder der Applikation liegen. Teste ich allerdings mspaint.exe
oder Notepad.exe klappt es ohne Probleme (vermutlich wegen enviroment variables). Ich möchte aber die eigene .exe bzw .bat auch
ordnungsgemäß starten können.
Kann mir jemand sagen wie oder warum das nicht funktioniert
Danke euch vielmals,
Gruß!
bin heute mal wieder mit einer Frage auf eure Hilfe angewiesen.
Ich erstelle gerade eine Applikation, welche per Befehlszeile Argumente entgegennimmt und danach dieses Argument als Datei mit Berechtigungen eines Administrators
startet. Allerdings will das "Process.start" nicht klappen.
So sieht der source aus:
VB.NET-Quellcode
- Imports Microsoft.Win32
- Imports System.Windows.Forms
- Imports System.Reflection
- Public Class Form1
- Public hostname As String
- Public passwd As String = "123456789"
- Public procname As String
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- ExecuteParams()
- End Sub
- Public Sub ExecuteParams()
- Dim args As String()
- args = Environment.GetCommandLineArgs()
- For i As Integer = 1 To args.Length - 1
- Select Case args(i).ToLower
- Case "?", "help", "hilfe"
- MsgBox("Bitte verwenden Sie als Parameter die zu startende ausführbare" & vbNewLine & "Datei! Dies kann eine *.bat, *.exe, *.msi oder *.pif Datei sein!",MsgBoxStyle.Question, "Hilfe zu runasadmin")
- Application.Exit()
- Case "info"
- 'info
- Application.Exit()
- Case Else
- procname = args(i)
- End Select
- Next
- If procname.Contains(".") Then
- Dim pfad As String = Application.StartupPath & procname 'System.IO.Path.Combine([Assembly].GetExecutingAssembly.Location, procname)
- Dim p As New ProcessStartInfo(pfad)
- p.UseShellExecute = False
- p.WindowStyle = ProcessWindowStyle.Hidden
- p.Domain = System.Net.Dns.GetHostName()
- p.UserName = "Administrator"
- p.Password = New System.Security.SecureString()
- For Each c As Char In passwd
- p.Password.AppendChar(c)
- Next
- Try
- Process.Start(p)
- Application.Exit()
- Catch ex As Exception
- MsgBox("Fehler " & ex.Message)
- End Try
- Else
- Application.Exit()
- End If
- End Sub
Die Process.start Prozedur habe ich bereits einige Male geändert, folgendes habe ich ebenfalls ausprobiert:
(Leider ohne Erfolg)
bzw.
- p.WorkingDirectory = "C:\"
- p.WorkingDirectory = "C:"
- p.WorkingDirectory = Application.StartupPath & procname
- p.WorkingDirectory = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly.Location)
In jedem Fall bekomme ich als Fehlermeldung "Der Verzeichnisname ist ungültig" zurück oder "Das System kann den angegebenen Pfad nicht finden." Getestet habe ich jeweils eine .exe und eine .bat Datei die im gleichen Folder der Applikation liegen. Teste ich allerdings mspaint.exe
oder Notepad.exe klappt es ohne Probleme (vermutlich wegen enviroment variables). Ich möchte aber die eigene .exe bzw .bat auch
ordnungsgemäß starten können.
Kann mir jemand sagen wie oder warum das nicht funktioniert
Danke euch vielmals,
Gruß!