是否有任何類可以在.net中獲取遠程PC的日期時間?爲了做到這一點,我可以使用計算機名稱或時區。對於每種情況,是否有不同的方式來獲取當前的日期時間?我使用Visual Studio 2005獲取遠程PC的日期時間?
3
A
回答
1
您可以使用遠程WMI和Win32_TimeZone
class。您確實需要具有在該計算機上執行WMI查詢的權限。通過使用UTC而不是當地時間避免這樣的麻煩。
5
我給你一個解決方案,它使用WMI。您可能會或可能不會需要域名和安全信息:在Windows機器上
try
{
string pc = "pcname";
//string domain = "yourdomain";
//ConnectionOptions connection = new ConnectionOptions();
//connection.Username = some username;
//connection.Password = somepassword;
//connection.Authority = "ntlmdomain:" + domain;
string wmipath = string.Format("\\\\{0}\\root\\CIMV2", pc);
//ManagementScope scope = new ManagementScope(
// string.Format("\\\\{0}\\root\\CIMV2", pc), connection);
ManagementScope scope = new ManagementScope(wmipath);
scope.Connect();
ObjectQuery query = new ObjectQuery(
"SELECT * FROM Win32_LocalTime");
ManagementObjectSearcher searcher =
new ManagementObjectSearcher(scope, query);
foreach (ManagementObject queryObj in searcher.Get())
{
Console.WriteLine("-----------------------------------");
Console.WriteLine("Win32_LocalTime instance");
Console.WriteLine("-----------------------------------");
Console.WriteLine("Date: {0}-{1}-{2}", queryObj["Year"], queryObj["Month"], queryObj["Day"]);
Console.WriteLine("Time: {0}:{1}:{2}", queryObj["Hour"], queryObj["Minute"], queryObj["Second"]);
}
}
catch (ManagementException err)
{
Console.WriteLine("An error occurred while querying for WMI data: " + err.Message);
}
catch (System.UnauthorizedAccessException unauthorizedErr)
{
Console.WriteLine("Connection error (user name or password might be incorrect): " + unauthorizedErr.Message);
}
1
有net time \\<remote-ip address>
得到一個遠程計算機的時間。你可以使用它來查找遠程系統時間,如果你想要代碼,你可以把它包裝在函數中來執行C#中的shell(DOS)函數。
1
由於WMI代碼將是非常緩慢的,你可以用下面的代碼來獲得更快的結果
string machineName = "vista-pc";
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.FileName = "net";
proc.StartInfo.Arguments = @"time \\" + machineName;
proc.Start();
proc.WaitForExit();
List<string> results = new List<string>();
while (!proc.StandardOutput.EndOfStream)
{
string currentline = proc.StandardOutput.ReadLine();
if (!string.IsNullOrEmpty(currentline))
{
results.Add(currentline);
}
}
string currentTime = string.Empty;
if (results.Count > 0 && results[0].ToLower().StartsWith(@"current time at \\" + machineName.ToLower() + " is "))
{
currentTime = results[0].Substring((@"current time at \\" + machineName.ToLower() + " is ").Length);
Console.WriteLine(DateTime.Parse(currentTime));
Console.ReadLine();
}
相關問題
- 1. 獲取並解析遠程日期時間價值
- 2. SQL Server 2008:從日期時間獲取日期/時間
- 3. 僅從日期時間對象獲取日期或時間
- 4. 時間跨度日期PC VS設備
- 5. 獲取兩個日期之間的最大日期/時間
- 6. 從日期時間獲取小時?
- 7. 獲取時區知道日期時間
- 8. 獲取日期()的具體時間
- 9. 獲取某些UNIX時間的日期
- 10. Mysql select - 獲取時間戳的日期
- 11. Servlet的獲取日期和時間
- 12. sql獲取日期的具體時間
- 13. 獲取30天的日期和時間
- 14. 獲取mailitem的完成日期時間
- 15. 獲取日期時間的一部分
- 16. 獲取facebook格式的日期/時間
- 17. 獲取日期的準確時間mysql
- 18. MYSQL日期時間獲取日期提取一個月回
- 19. django在日期時間的日期排序/從日期時間提取日期
- 20. 計算日期時間差只獲取時間期限
- 21. 獲取比當前日期時間晚的日期數
- 22. 獲取日期時間(ASP.NET MVC)的日期部分
- 23. 獲取日期 - 日期時間列的統計信息 - mysql/php
- 24. MYSQL日期時間查詢來獲取特定的日期值
- 25. 獲取日期時間格式之間的持續時間
- 26. 獲取日期時間差在陣列
- 27. 獲取日期時間從字符串
- 28. 時段之間獲取日期
- 29. PHP獲取本地日期和時間
- 30. XSLT 1.0獲取當前日期時間
遠程PC是如何連接到你的機器?通過網絡?通過網絡? – 2010-05-14 19:05:41
連接是通過網絡。我可以通過計算機名稱或IP ping到該框。 – 2010-05-15 03:05:39
實際上,在我更新數據之前,我有SQL查詢從遠程PC獲取遠程時間(SELECT GetDateTime()),並且還希望向用戶顯示遠程日期時間。該查詢每2分鐘調用一次,並且我收到了一些異常(可能是由表單上的定時器引起的)。這就是爲什麼我正在考慮使用任何其他替代方法來獲取遠程日期時間。 – 2010-05-15 03:09:21