2012-05-02 40 views
1

我想通過從遠程計算機讀取當前信息來設置我的系統日期&時間。那臺電腦在一個域中。我使用下面的代碼來訪問時區:通過WMI設置日期和時間vb

Set objWMIService = GetObject("winmgmts:\\" & ServerAddress & "\root\cimv2") 
Set oRemoteItems = objWMIService.ExecQuery("Select * from Win32_TimeZone") 

For Each o In oRemoteItems 
    ServerTime = o.StandardName 
    Exit Function 
Next 

但這段代碼不起作用。我得到拒絕訪問錯誤(5)。請告訴我在哪裏做錯了什麼?我也需要模擬用戶,因爲在工作組上時 - >兩臺機器上的工作組用戶都是一樣的。但是,當在兩個系統上的工作組 - >域用戶不同時。請建議如何模仿和使用上面的代碼?

此外,我使用淨時間命令來設置日期&時間,但它也由於拒絕訪問錯誤而失敗。

問候,

+0

有你看看這個:http://blogs.technet.com/b/heyscriptingguy/archive/2007/11/16/hey-scripting-guy-how- can-i-set-date-and-time-on-a-computer.aspx – HK1

+0

您可能需要使用諸如psexec之類的東西才能使腳本在不在域中的遠程計算機上工作。 – HK1

+0

謝謝HK1,我知道psexec,但我有幾個系統沒有psexec工具。但是,沒有其他方式像我以上用於瞭解工作組中遠程計算機的時區?應該有一些方法來模擬域管理員用戶並使用該對象通過WMI瞭解時間信息。任何其他的想法也歡迎。 – Dipesh

回答

2

我終於實現了它.. :)

下面的代碼會告訴你的時區,日期&時間遠程系統的遠程無關係統的域或工作組之中。只需要考慮的是運行在代碼下面的用戶必須是工作組或域上的管理員。

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") 
Set objWMIService = objSWbemLocator.ConnectServer(remoteserver,"root\CIMV2",adminuser,adminpassword,"MS_409","") 

Set oRemoteItems = objWMIService.ExecQuery("Select * from Win32_TimeZone") 

For Each o In oRemoteItems 
    sServerTimezone = o.StandardName 
Next 

MSGBOX sServerTimezone

「搜索Win32_TimeZone的谷歌和你會發現日期&時間除了StandardName

感謝您的幫助其他參數。

問候,

Dipesh