这是注册表项的样子:
A1="OS Ver";A2="Patch Ver";A3="Location Number"
...
我的脚本将获取位置编号,例如“A3”值并将其传递给我正在尝试编写的 VB 程序。VB 程序读取输入,确定 A3 是否存在并更改值。
下面是一段VB代码:
Module Main Public Sub Set_A3(declare String) Open Registry GetValue 如果 A3 存在更改 A3="Location number" 输入 Registry.Close End Sub
Sub Main() Declare line as String Readline If line contains input call function End Sub
我被卡住的地方是来自像程序正常工作的命令。但是,一旦我将它合并到脚本中,它就会挂起读取所有其他条目。
问题,当程序在获取位置编号之前出现脚本中的特殊字符然后停止时,如何调用 readline 函数?
还有其他方法可以处理整个事情吗??!!
我希望我在描述这个问题时做得很好。如果有任何问题,请询问。非常感谢您的帮助。
根据 Ken White 要求的代码:
Imports System.Data.OleDb
Imports System.Net.NetworkInformation
Imports Microsoft.Win32
Module Main
Public Sub Set_A3(ByVal A3 As String)
Try
If A3 <> "" Then
Dim sConfig As String
Dim regKey As RegistryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\SS\Location\Variables", True)
sConfig = regKey.GetValue("VariableGroups")
Dim sConfigNew As String = ""
Dim s() As String = sConfig.Split(";")
For i As Integer = 0 To s.Count - 1
If s(i).Contains("A3") Then
s(i) = String.Format("A3={1}{0}{1}", AU, Chr(34))
End If
If s(i).Contains("A4") Then
s(i) = String.Format("A4={1}{0}{1}", "New Configuration", Chr(44))
End If
Next
Dim bFirst As Boolean = True
For Each stmp As String In s
If bFirst Then
sConfigNew = stmp
bFirst = False
Else
sConfigNew = String.Format("{0};{1}", sConfigNew, stmp)
End If
Next
regKey.SetValue("VariableGroups", sConfigNew)
regKey.Close()
Else
Console.WriteLine("No Location Number Input")
End If
Catch ex As Exception
Console.WriteLine(String.Format("RegSet Error: {0}", ex.Message))
End Try
End Sub
Sub Main()
Try
Dim line As String
line = Console.ReadLine()
If line IsNot Nothing And line.Contains("-a3") Then
Set_A3(Environment.GetCommandLineArgs(2).ToString())
line = Console.ReadLine()
If line.Contains("True") Then
Exit
End If
End If
Catch ex As Exception
End Try
End Sub
End Module
因此,在调用上面编码的程序之后会发生什么,readline 在到达“-a3”之前会遍历所有其他输入,因此它只会坐在那里。然而,如果我只是通过 cmd 使用此参数“-a3 12345”调用 .exe 文件,它将在注册表中很好地填充 A3 字段。
希望这可以帮助。请帮忙。我非常感谢任何建议/意见。