Hallo Leute.
Zunächst einmal ein großes Lob an die Community, die ich seit langer Zeit sehr interessiert verfolge und i.d.R. auch nutznieße. Nun brauche ich jedoch Rat, da ich verzweifelt nicht mehr weiter weiß.
Folgendes Szenario.
Es soll verhindert werden, dass ein bestimmtes Programm beendet wird. In der Realität wird dieses kleine Tool gerne mal von den Benutzern "abgeschossen". Damit es wieder anstartet, dachte ich mir, schreibe ich einen Windows - Dienst, welcher dieses Proggi unter einem bestimmten Benutzer-Account erneut aufruft.
Client WindowsXP SP3
Entwicklung VB2008 Professional
Server Windows 2003 Standart
Hier ein Auszug aus dem Quellcode:
---------------------------------------------------------------------------------------------------------
[highlight=vbnet]
'<ZoneIdentityPermission(SecurityAction.Assert)> _
Private Sub timer3callback(ByVal state As Object)
'Impersonate()
Dim s As timerstate = DirectCast(state, timerstate)
Dim log As New System.Diagnostics.EventLog
Dim passw As New SecureString
Dim passwort As String
Dim c As Char
Dim pro() As Process = Process.GetProcesses()
Dim p As Process
Dim bLäuft As Boolean = False
For Each p In pro
If p.ProcessName = "test" Then
bLäuft = True
End If
Next
s.counter += 1
If Not bLäuft Then
If IO.File.Exists("c:\programme\test\test.exe") Then
c = ""
passwort = ""
For i = 1 To Len(passwort)
c = Mid(passwort, i, 1)
passw.AppendChar(c)
Next i
Dim Programm As ProcessStartInfo = New ProcessStartInfo
Dim ProgrammProcess As New Process
Programm.UseShellExecute = False
Programm.CreateNoWindow = True
Programm.FileName = "c:\programme\test\test.exe"
Programm.WorkingDirectory = "c:\programme\test\"
Programm.Arguments = Programm.FileName
Programm.UserName = "wilwic"
Programm.Password = passw
Programm.Domain = "beimir"
Process.Start(Programm)
End If
End If
'Dispose()
End Sub
[/highlight]
-------------------------------------------
Funktioniert in der WindowsForm-Anwendung auch einwandfrei. Jedoch, sofern ich dies in einem Dienst (Anmeldung egal ob als Netzwerkdienst, Lokaler Dienst oder User Account) ausführe, erhalte ich entweder:
-- Zugriff verweigert
oder
-- Verzeichnis nicht vorhanden / ungültig.
Es macht mich irre.... Kann mir jemand auf die Sprünge helfen ????
Zunächst einmal ein großes Lob an die Community, die ich seit langer Zeit sehr interessiert verfolge und i.d.R. auch nutznieße. Nun brauche ich jedoch Rat, da ich verzweifelt nicht mehr weiter weiß.
Folgendes Szenario.
Es soll verhindert werden, dass ein bestimmtes Programm beendet wird. In der Realität wird dieses kleine Tool gerne mal von den Benutzern "abgeschossen". Damit es wieder anstartet, dachte ich mir, schreibe ich einen Windows - Dienst, welcher dieses Proggi unter einem bestimmten Benutzer-Account erneut aufruft.
Client WindowsXP SP3
Entwicklung VB2008 Professional
Server Windows 2003 Standart
Hier ein Auszug aus dem Quellcode:
---------------------------------------------------------------------------------------------------------
[highlight=vbnet]
'<ZoneIdentityPermission(SecurityAction.Assert)> _
Private Sub timer3callback(ByVal state As Object)
'Impersonate()
Dim s As timerstate = DirectCast(state, timerstate)
Dim log As New System.Diagnostics.EventLog
Dim passw As New SecureString
Dim passwort As String
Dim c As Char
Dim pro() As Process = Process.GetProcesses()
Dim p As Process
Dim bLäuft As Boolean = False
For Each p In pro
If p.ProcessName = "test" Then
bLäuft = True
End If
Next
s.counter += 1
If Not bLäuft Then
If IO.File.Exists("c:\programme\test\test.exe") Then
c = ""
passwort = ""
For i = 1 To Len(passwort)
c = Mid(passwort, i, 1)
passw.AppendChar(c)
Next i
Dim Programm As ProcessStartInfo = New ProcessStartInfo
Dim ProgrammProcess As New Process
Programm.UseShellExecute = False
Programm.CreateNoWindow = True
Programm.FileName = "c:\programme\test\test.exe"
Programm.WorkingDirectory = "c:\programme\test\"
Programm.Arguments = Programm.FileName
Programm.UserName = "wilwic"
Programm.Password = passw
Programm.Domain = "beimir"
Process.Start(Programm)
End If
End If
'Dispose()
End Sub
[/highlight]
-------------------------------------------
Funktioniert in der WindowsForm-Anwendung auch einwandfrei. Jedoch, sofern ich dies in einem Dienst (Anmeldung egal ob als Netzwerkdienst, Lokaler Dienst oder User Account) ausführe, erhalte ich entweder:
-- Zugriff verweigert
oder
-- Verzeichnis nicht vorhanden / ungültig.
Es macht mich irre.... Kann mir jemand auf die Sprünge helfen ????
Comment