Forums Neueste Beiträge
 

.CMD starten von einem Dienst aus

20/07/2009 - 14:18 von Michael Kolowicz | Report spam
hallo,

ich habe einen einen Windows-Dienst erstellt, der in Abstànden bestimmte
.CMD auf einer Freigabe ausführen soll

Verwenden tue ich folgende Routine zum Ausführen:

''' <summary>
''' Starten einer externen Anwendung und warten, bis diese wieder
geschlossen wird
''' </summary>
''' <param name="PathToApplication">Pfad und Name der Anwendung, die
gestartet werden soll</param>
''' <param name="Arguments">Die zusÎtzlichen Parameter um die
Anwendung zu starten</param>
''' <param name="WindowsState">Wie die gestartete Anwendung
angezeigt werden soll</param>
''' <remarks></remarks>
Public Shared Sub WaitForShelledApplication(ByVal PathToApplication
As String, Optional ByVal Arguments As String = "", Optional ByVal
WindowsState As ProcessWindowStyle = ProcessWindowStyle.Normal, _
Optional ByVal AdminUser
As String = "", Optional ByVal AdminPassword As String = "")
Dim pInfo As New ProcessStartInfo
Dim pProcess As Process
Dim sPassword As Security.SecureString = New
Security.SecureString

Try
If AdminPassword.Length > 0 Then
For Each _char As Char In AdminPassword
sPassword.AppendChar(_char)
Next
End If

With pInfo
.Arguments = String.Format("""{0}""", Arguments)
.FileName = PathToApplication
.WindowStyle = WindowsState
.Verb = "runas"
.Password = sPassword
.UserName = AdminUser
.UseShellExecute = False
End With

pProcess = Process.Start(pInfo)
With pProcess
'.WaitForInputIdle()
.WaitForExit()
End With

Catch ex As Exception

End Try
End Sub


Nun funktioniert es aber nicht, sondern bringt den fehler: zugriff
verweigert

Wie kann ich prüfen woran es liegt? Welche einstellungen beim service
muss ich machen, damit ich als ein anderer Benutzer einen Freigabe
verbinden kann und dann als ein weiterer anderer Benutzer die cmd-datei
starten kann?

mg
Michael
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
21/07/2009 - 03:22 | Warnen spam
Hallo Michael,

"Michael Kolowicz" schrieb:

ich habe einen einen Windows-Dienst erstellt, der in Abstànden bestimmte
.CMD auf einer Freigabe ausführen soll



so ganz generell ein paar Fragen:

Klappt es, wenn die .cmd Datei lokal liegt?

Klappt es, wenn Du mal "Hidden" als ProcessWindowStyle zuweist?
(Dienste tun sich in den allermeisten Fàllen etwas schwer damit,
was anzuzeigen, da sie meist gar nicht wissen können, wo sie das
tun sollen :)

http://msdn.microsoft.com/en-us/lib...style.aspx

Nun funktioniert es aber nicht, sondern bringt den fehler: zugriff
verweigert



Schau mal erst, was genau da fehlschlàgt. Der Zugriff auf die Datei,
der Aufruf des Prozesses, ...

http://technet.microsoft.com/de-de/...96645.aspx

Welche einstellungen beim service muss ich machen, damit ich als ein
anderer Benutzer einen Freigabe verbinden kann



Welche Einstellungen hast Du denn derzeit? Was verstehst Du unter Freigabe?
Willst Du über ein Netzlaufwerk zugreifen? Oder über \\server\freigabe\...?

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen