使用自带的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