2014-05-23 78 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 

我將值輸入到窗體上的文本框,它是隻讀的。