C# 您正在尝试记录其他尝试使用该程序的计算机吗?不,我实际上阻止其他计算机使用此应用程序。所以,我想使用机器的序列号(我想允许这个应用程序)作为字符串,并在代码中进行比较(就像您为我做的那样)。但是我使用的代码hdSN=wmi_HDD[“SerialNumbe

C# 您正在尝试记录其他尝试使用该程序的计算机吗?不,我实际上阻止其他计算机使用此应用程序。所以,我想使用机器的序列号(我想允许这个应用程序)作为字符串,并在代码中进行比较(就像您为我做的那样)。但是我使用的代码hdSN=wmi_HDD[“SerialNumbe,c#,winforms,runtime,hard-drive,C#,Winforms,Runtime,Hard Drive,您正在尝试记录其他尝试使用该程序的计算机吗?不,我实际上阻止其他计算机使用此应用程序。所以,我想使用机器的序列号(我想允许这个应用程序)作为字符串,并在代码中进行比较(就像您为我做的那样)。但是我使用的代码hdSN=wmi_HDD[“SerialNumber”].ToString()不知怎的没有得到序列号。该方法的其余部分是完美的,我已经接受了它作为我的答案。@teccraft我不确定为什么它对您不起作用,因为该对象可以一直追溯到.Net 1.1。我已经更新了我的答案,包括使用用户名而不是HD


您正在尝试记录其他尝试使用该程序的计算机吗?不,我实际上阻止其他计算机使用此应用程序。所以,我想使用机器的序列号(我想允许这个应用程序)作为字符串,并在代码中进行比较(就像您为我做的那样)。但是我使用的代码
hdSN=wmi_HDD[“SerialNumber”].ToString()不知怎的没有得到序列号。该方法的其余部分是完美的,我已经接受了它作为我的答案。@teccraft我不确定为什么它对您不起作用,因为该对象可以一直追溯到.Net 1.1。我已经更新了我的答案,包括使用用户名而不是HD SN(如果有帮助的话)。如果我有SDD,是否应该有任何更改?我试图运行代码,在引号内添加我笔记本电脑的串行密钥,但它抛出了一个未处理的异常。有办法解决这个问题吗@Terrysonth这个解决方案对我很有效。然而,我不知何故无法以正确的方式获取当前机器的hdd序列号。我不明白你在说什么。您正在尝试记录其他尝试使用该程序的计算机吗?不,我实际上阻止其他计算机使用此应用程序。所以,我想使用机器的序列号(我想允许这个应用程序)作为字符串,并在代码中进行比较(就像您为我做的那样)。但是我使用的代码
hdSN=wmi_HDD[“SerialNumber”].ToString()不知怎的没有得到序列号。该方法的其余部分是完美的,我已经接受了它作为我的答案。@teccraft我不确定为什么它对您不起作用,因为该对象可以一直追溯到.Net 1.1。我已经更新了我的答案,包括使用用户名而不是HD SN(如果有帮助的话)。如果我有SDD,是否应该有任何更改?我试图运行代码,在引号内添加我笔记本电脑的串行密钥,但它抛出了一个未处理的异常。有办法解决这个问题吗@特雷森
ManagementObjectSearcher moSearcher = new ManagementObjectSearcher("select * from Win32_DiskDrive");
            foreach (ManagementObject wmi_HDD in moSearcher.Get())
            {
                HardDrive hdd = new HardDrive();

                hdd.Model = wmi_HDD["Model"].ToString();
                hdd.SerialNo = wmi_HDD["SerialNumber"].ToString();
                hdd.Type = wmi_HDD["InterfaceType"].ToString();

                HDDArrayList.Add(wmi_HDD);

                txtHDDModel.Text = hdd.Model;
                txtHDDSerialNo.Text = hdd.SerialNo;
                txtHDDType.Text = hdd.Type;
            }
    static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        if (ValidHD() != true)
        {
            return;
        }
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }

    private static bool ValidHD()
    {
        string hdSN = String.Empty;
        ManagementObjectSearcher moSearcher = new ManagementObjectSearcher("select * from Win32_DiskDrive");
        foreach (ManagementObject wmi_HDD in moSearcher.Get())
        {
            hdSN = wmi_HDD["SerialNumber"].ToString();
        }

        if (hdSN == "Your_SN_Here")
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}
    static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        if (ValidUser() != true)
        {
            return;
        }
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }

    private static bool ValidUser()
    {
        if (System.Environment.UserName == "Your_Username_Here")
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}