獲取遠程計算機上磁盤的剩余空間,所要獲取的遠程計算機上的磁盤可能是共享的,也可能不是共享的。如果是共享的就好辦多了,你可以不需要太多的權限就可以獲取你想要的東西。
1 /// <summary>
2 /// 獲得UNC路徑所指向文件夾所在磁盤的的剩余空間大小----需要
3 /// </summary>
4 /// 參數為UNCPath和路徑所在的磁盤
5 /// <param name="UNCPath"></param>
6 /// <returns></returns>
7 private void btGetRemoteFolderFreeSpace_Click(object sender, EventArgs e)
8 {
9
10 string ip = textBoxSrcPath.Text;
11 string disksrc = textBoxDirPath.Text;
12 string username = txtUsername.Text;
13 string password = txtPassword.Text;
14
15 long freesize = 0l;
16 long gb = 1024*1024*1024;
17 ConnectionOptions connectionOptions=new ConnectionOptions();
18 connectionOptions.Username = username;
19 connectionOptions.Password = password;
20 connectionOptions.Timeout=new TimeSpan(1,1,1,1);//連接時間
21
22 //ManagementScope 的服務器和命名空間。
23 string path = string.Format("\\\\{0}\\root\\cimv2", ip);
24 //表示管理操作的范圍(命名空間),使用指定選項初始化ManagementScope 類的、表示指定范圍路徑的新實例。
25 ManagementScope scope = new ManagementScope(path, connectionOptions);
26 scope.Connect();
27 //查詢字符串,某磁盤上信息
28 string strQuery=string.Format( "select * from Win32_LogicalDisk where deviceid='{0}'",disksrc);
29
30 ObjectQuery query=new ObjectQuery(strQuery);
31 //查詢ManagementObjectCollection返回結果集
32 ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
33 foreach (ManagementObject m in searcher.Get())
34 {
35 if (m["Name"].ToString()==disksrc)
36 {//通過m["屬性名"]
37 freesize = Convert.ToInt64(m["FreeSpace"])/gb;
38 }
39 }
40 MessageBox.Show("磁盤"+disksrc+"的可用空間為"+freesize+"GB");
41
42 }
43
其中textBoxSrcPath.Text是值遠程計算機的Ip地址,當然了,你需要提供計算機的用戶名和密碼,如果該磁盤整個都共享,你甚至都不需要用戶名和密碼,上面的例子是磁盤的某個文件夾是共享 的,但是該磁盤不共享,如果該磁盤是共享的就可以跟據unc路徑想獲取本地磁盤剩余空間一樣獲取該共享磁盤的剩余空間了。
本文出自 “HDDevTeam” 博客