Итак, я создал эту службу Windows в VB.Net, и все, что она делает, это выполняет несколько вызовов и сидит там.(На самом деле ничего не делает)
Я установил его на тестовом компьютере, и когда я запускаю его вручную, он запускается.Когда я останавливаюсь вручную, выключается должным образом (вызывается onStop).
Когда я запускаю его и перезагружаю машину, служба запускается, как и должна, но когда я вхожу, служба больше не работаети onStop никогда не показывался как выполняемый.
Я установил службу с правами администратора, так что это не должно быть проблемой.
Вот что у меня есть:
Sub New()
' This call is required by the Windows Form Designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
'' Open our log file
FileReader = New IO.StreamWriter("C:\test.txt", True)
Log("Starting service...")
'' Get the username from the process list (If explorer is open (Meaning a user is logged in)
Dim ProcessList As System.Diagnostics.Process()
ProcessList = System.Diagnostics.Process.GetProcesses()
Dim Proc As System.Diagnostics.Process
For Each Proc In ProcessList
If Proc.ProcessName.ToLower() = "explorer" Then
My.Settings.Username = GetProcessUserName(Proc)
Exit For
End If
Next
Log("Fetched user name: " & My.Settings.Username)
Try
'' Get the IP address of the machine
Dim h As System.Net.IPHostEntry = System.Net.Dns.GetHostByName(System.Net.Dns.GetHostName)
My.Settings.IP = h.AddressList.GetValue(0).ToString
'' Get the Machine Information
My.Settings.MachineName = System.Environment.MachineName()
'' Get the Operating System Version
Dim osInfo As New FindOsInfo
My.Settings.OS = osInfo.OsName.ToString().Replace(" ", "").Split("|")(0)
Catch ex As Exception
Log("Startup error: " & ex.Message)
End Try
'' Start server listen here
End Sub
'Protected Overrides Sub OnStart(ByVal args() As String)
'End Sub
Protected Overrides Sub OnStop()
' Add code here to perform any tear-down necessary to stop your service.
Log("Closing down service...")
FileReader.Close()
End Sub
Public Sub Log(ByVal str As String)
Dim time As DateTime = DateTime.Now
FileReader.WriteLine("[" & time.ToString("G") & "] " & str)
FileReader.Flush()
End Sub
Спасибо за ваше время!