2014-05-23 76 views
1

我正在研究一个将安装在工厂车间多台计算机上的程序。这个程序有一个登录屏幕,其中一个要求是它应该根据计算机自动输入机器名称。所以我决定用机器名称在HKEY_LOCAL_MACHINE中放入一个密钥是一个好主意,这样员工就不会混淆了它。唯一的问题是,我无法知道如何从注册表中读取密钥。从Windows注册表中读取值?

我发现代码似乎正在创建一个键和读取/写入它,但我只是需要阅读它即时通讯不会做一个或写入一个。这是代码,

Dim strString As String 
Dim cdReg As New registryfncs 
cdReg.CreateKey ("HKEY_LOCAL_MACHINE\Software\Expert Resource Management") 

strString = cdReg.SetStringValue("HKEY_LOCAL_MACHINE\Software\Expert Resource Management", "Owner", Date) 
strString = cdReg.GetStringValue("HKEY_LOCAL_MACHINE\Software\Expert Resource Management", "Owner") 

我想知道这是否正确的方式去或如果即时消失无望。

+0

这里有很多解决方案:https://www.google.com/search?q=vb6+read+key+from+registry&oq=vb6+read+key+from+registry。究竟是什么问题?你测试了代码吗? – LittleBobbyTables

+0

我输入的代码,我把我需要的值,但事实证明'registryfncs'不是一个本地的VB6申报对象。我不知道它来自哪里。即时通讯从谷歌搜索阅读在VB6中的注册表项的文章buch,但没有真正帮助我,我不知道该使用什么和不使用。 – NickHallick

回答

2

一个简单的方法来获取本地计算机的名称是:

Dim UserDomain As String 
UserDomain = Environ("USERDOMAIN") 

这需要NT或更高版本,但我认为不是,尽管它是VB6的问题。

如果您还希望用户名:

Dim UserName As String 
UserName = Environ("USERNAME") 

应该比注册表容易。还有一种API方法,但这应该起作用。

它也可从HCU\Volatile Environment\UserDomain和用户名,但给定的子项名称,我会留在Environ方法(它可以读取一个CUSTOM名称,如果你想)。


为了完整,不使用VB命名空间中的.NET版本是:

Dim UserDomain As String = 
    = Environment.GetEnvironmentVariable("USERDOMAIN") 
1

我想通了,我需要阅读,我在HKEY_LOCAL_MACHINE做了重点叫做试验机是我可以输入我需要的任何字符串。这里是代码,

Private Sub Form_Load() 
Test 

End Sub 

Private Function Registry_Read(Key_Path, Key_Name) As Variant 

On Error Resume Next 

Dim Registry As Object 
Set Registry = CreateObject("WScript.Shell") 
Registry_Read = Registry.RegRead(Key_Path & Key_Name) 
End Function 

Private Sub Test() 

txtMachine.Text = Registry_Read("HKEY_LOCAL_MACHINE\", "Test Machine") 
End Sub 

我将值输入到窗体上的文本框,它是只读的。