1

SQL Serverを備えたC#.netWindowsフォームアプリケーションがあります。私のアプリケーションは、ローカルネットワークによる複数ユーザーで使用しています。次に、ハードディスクがSQLサーバーをインストールしたハードディスクのシリアル番号を見つける必要があります(注:C#.netアプリケーションデータソースを使用)。

アプリケーションデータソースによってスローされたハードディスクのシリアル番号を見つけるにはどうすればよいですか?

4

3 に答える 3

0

これは役に立つかもしれません

using System;
using System.Management;
using System.Collections;

namespace WmiControl
{
    public class WMI
    {
        public bool GetDiskSerial(string Computername)
        {

            try
            {
                ManagementScope scope = new ManagementScope(@"\\" + Computername + @"\root\cimv2");
                scope.Connect();
                ArrayList hdCollection;
                ManagementObjectSearcher searcher;
                if (GetDiskDrive(scope, out hdCollection, out searcher) || GetDiskSerial(scope, hdCollection, ref searcher))
                    return true;
                else 
                    return false;
            }
            catch (ManagementException)
            {
                return false;
            }

        }

        private bool GetDiskSerial(ManagementScope scope, ArrayList hdCollection, ref ManagementObjectSearcher searcher)
        {
            try
            {


                ObjectQuery query1 = new ObjectQuery("SELECT * FROM Win32_PhysicalMedia");

                searcher = new ManagementObjectSearcher(scope, query1);
                int i = 0;
                string sDiskSerial = "";
                foreach (ManagementObject wmi_HD in searcher.Get())
                {
                    // get the hard drive from collection
                    // using index
                    if (i < hdCollection.Count)
                    {
                        HardDrive hd = (HardDrive)hdCollection[i];
                        if (wmi_HD["SerialNumber"] == null)
                            hd.SerialNo = "";
                        else
                            hd.SerialNo = wmi_HD["SerialNumber"].ToString();
                    }
                    ++i;
                }
                foreach (HardDrive hd in hdCollection)
                {
                    if (!String.IsNullOrEmpty(hd.SerialNo))
                    {
                        sDiskSerial = hd.SerialNo;
                        break;
                    }
                }
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }

        private bool GetDiskDrive(ManagementScope scope, out ArrayList hdCollection, out ManagementObjectSearcher searcher)
        {
            try
            {
                ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_DiskDrive");
                hdCollection = new ArrayList();
                searcher = new ManagementObjectSearcher(scope, query);
                foreach (ManagementObject wmi_HD in searcher.Get())
                {
                    HardDrive hd = new HardDrive();
                    hd.Model = wmi_HD["Model"].ToString();
                    hd.Type = wmi_HD["InterfaceType"].ToString();
                    hdCollection.Add(hd);
                    return true;
                }
                return true;
            }
            catch (Exception)
            {
                hdCollection = null;
                searcher = null;
                return false;
            }
        }
    }
    class HardDrive
    {
        private string model = null;
        private string type = null;
        private string serialNo = null;
        public string Model
        {
            get { return model; }
            set { model = value; }
        }
        public string Type
        {
            get { return type; }
            set { type = value; }
        }
        public string SerialNo
        {
            get { return serialNo; }
            set { serialNo = value; }
        }
    }
}

詳細については、こちらをご覧ください

CLRも勉強したいかもしれません

于 2012-07-16T09:02:35.230 に答える
0

WMIに頼る必要があります。SQL Serverマシンに対する適切な権限があれば、そのマシン上のハードドライブのシリアル番号を取得できます。WMIを使用してハードディスクのシリアル番号を取得する例については、ここを参照してください。

どのディスクがSQLServerを保持しているか、および自分でSQLServerマシンにアクセスする方法を理解する必要があります。

于 2012-07-16T08:57:49.213 に答える
0

あなたは3つの段階でそれをしなければなりません:

  • データソースの接続文字列は、SQLServerがインストールされているマシンの名前を示します
  • 次に、マシンにクエリを実行して、SQLServerがインストールされているドライブを見つける必要があります。
  • 次に、ここで他の人から提供されたコードを使用して、シリアル番号を取得できます
于 2012-07-16T09:06:54.107 に答える