使用自帶的API磁盤上的啓動服務。
這是我用來註冊/取消註冊的類。
的CREG類我從這裏得到:RegistryKeyAccess.vb
進口的Microsoft.Win32
Public Class ThincStartupReg
Public Overloads Shared Sub Register(ApplicationPath As String, ApplicationName As String, AppType As enumAppType, wait As Boolean, LaunchType As enumLaunch)
Try
Dim ObjReg As New CReg
Dim regCreated As Boolean
If ObjReg.ReadValue(ObjReg.HKeyLocalMachine, "SOFTWARE\OAC\StartupService\", "State") Then
'Startup Service is installed
If Not ObjReg.ReadValue(ObjReg.HKeyLocalMachine, "SOFTWARE\OAC\Startup\" & ApplicationName, "Enabled") Then
'No entry for this program
regCreated = ObjReg.CreateSubKey(ObjReg.HKeyLocalMachine, "SOFTWARE\OAC\Startup\" & ApplicationName)
Else
regCreated = True
End If
If regCreated Then
ObjReg.WriteValue(ObjReg.HKeyLocalMachine, "SOFTWARE\OAC\Startup\" & ApplicationName,
"Type", "Process")
ObjReg.WriteValue(ObjReg.HKeyLocalMachine, "SOFTWARE\OAC\Startup\" & ApplicationName,
"Name", ApplicationName)
ObjReg.WriteValue(ObjReg.HKeyLocalMachine, "SOFTWARE\OAC\Startup\" & ApplicationName,
"Enabled", "True")
ObjReg.WriteValue(ObjReg.HKeyLocalMachine, "SOFTWARE\OAC\Startup\" & ApplicationName,
"Wait", If(wait, "True", "False"))
ObjReg.WriteValue(ObjReg.HKeyLocalMachine, "SOFTWARE\OAC\Startup\" & ApplicationName,
"Type", If(AppType = enumAppType.Process, "Process", "Service"))
ObjReg.WriteValue(ObjReg.HKeyLocalMachine, "SOFTWARE\OAC\Startup\" & ApplicationName,
"Launch", If(LaunchType = enumLaunch.LaunchOnce, "Once", "Monitor"))
ObjReg.WriteValue(ObjReg.HKeyLocalMachine, "SOFTWARE\OAC\Startup\" & ApplicationName,
"File", ApplicationPath)
End If
End If
Catch ex As Exception
Throw ex
End Try
End Sub
Public Overloads Shared Sub Register(ThisAssembly As System.Reflection.Assembly, ByVal AppType As enumAppType, ByVal Wait As Boolean, ByVal LaunchType As enumLaunch)
Dim AppName = ThisAssembly.FullName.Split(",")(0)
Dim AppPath = ThisAssembly.Location
Register(AppPath, AppName, AppType, Wait, LaunchType)
End Sub
Public Shared Sub UnRegister()
Try
Dim ObjReg As New CReg
Dim AppName = System.Reflection.Assembly.GetExecutingAssembly().FullName.Split(",")(0)
If ObjReg.ReadValue(ObjReg.HKeyLocalMachine, "SOFTWARE\OAC\StartupService\", "State") Then
If ObjReg.ReadValue(ObjReg.HKeyLocalMachine, "SOFTWARE\OAC\Startup\" & AppName, "Enabled") Then
ObjReg.DeleteSubKey(ObjReg.HKeyLocalMachine, "SOFTWARE\OAC\Startup\" & AppName)
End If
End If
Catch ex As Exception
Throw ex
End Try
End Sub
End Class
如果你不知道安裝服務將安裝只需要添加你的快捷方式啓動文件夾然後循環直到OSP進程開始。
Public Shared Function Wait(Timeout As TimeSpan) As Integer
If File.Exists("C:\OSP-P\OSPMNGCD.CNC") Then
Dim startTime = Now
Dim myProcess As Process() = Process.GetProcessesByName("PNC-P200")
While myProcess.Length = 0
If Now.Subtract(startTime) >= Timeout Then Return -1
myProcess = Process.GetProcessesByName("PNC-P200")
Thread.Sleep(1000)
End While
'OSP Started
Return 1
End If
'Simulation mode (not on a machine)
Return 2
End Function