如何使 c# windows 窗体应用程序仅在一台 PC 上运行?

工艺

我想配置我的 C# Windows 窗体应用程序,以便在运行应用程序之前,它标识匹配当前机器的硬盘驱动器序列号。如果硬盘序列号与配置的序列号匹配,则运行应用程序,否则什么都不做。

我想让它只在一台机器上运行,以防止重新分发应用程序,因为这是一个定制的应用程序,只为有一些特殊要求的客户开发。

以下代码获取当前机器的硬盘序列号、型号和接口类型。

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;
            }

此代码当前在单击按钮时运行。我希望它在 main 方法之前运行,它可以获取当前机器的硬盘序列号并将其与我的目标序列号(我想要允许的序列号)进行比较。

有没有更好的方法来解决这个问题以及比较过程?

泰森

这应该适合你:

    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;
        }
    }
}

希望这可以帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何制作仅在系统托盘中运行的.NET Windows窗体应用程序?

如何从另一台PC访问Laravel应用程序?

如何在另一台计算机上运行包含本地SQL Server数据库的C#应用程序?

在另一台PC上使用本地SQL Server数据库安装C#WPF应用程序

如何调整wpf应用程序在另一台PC上的XPS文档的路径?

在另一台PC上运行C Built .exe

我如何在Windows 10 PC上创建一个Docker容器以在Raspberry Pi 4上运行

如何使用我的PC在另一台PC的HDD上安装Windows?

如何在PC上运行iOS或Android应用程序?

C ++可使程序仅在一台PC上运行

我只有一台PC时如何测试我的应用程序的网络性能?

如何使Windows窗体应用程序自动运行?

如何使用Windows窗体应用程序按钮在Visual Studio 2010中运行控制台文件?

如何准备Windows PC来运行触摸屏Kiosk Shopping Mall应用程序

如何在同一台PC上的多个Windows帐户之间共享一个iTunes库?

如何将所有程序从一台Windows PC复制到另一台?

如何在另一台PC上重新安装零售Windows 8.1 Pro?

在同一台PC上安装Ubuntu和Windows

我如何在另一台PC上运行Qt应用程序?

阻止Windows 10安装我在另一台PC上使用的应用程序

如何使C#Windows窗体应用程序适合屏幕

如何通过cmd运行windows窗体应用程序

仅在 1 台 PC 上的 Windows 窗体中缺少控件。如何排除故障?

C#:从控制台应用程序更新 Windows 窗体上的标签文本

如何在离线的 ubuntu PC 上安装软件?我的“在线”PC 正在运行 Windows

在另一台 PC 上运行时,Windows 窗体文本变得太大

CEF - 嵌入式 Chromium - C# Windows 窗体不能在另一台机器上运行

当我在另一台 PC 上安装我的 C# 应用程序时,数据库不起作用

我将如何从 windows pc 上的主 python 程序在树莓派上打开和运行 python 程序?