精华内容
下载资源
问答
  • Linux读取U盘或者移动硬盘序列号并获取U盘或者移动硬盘分区名。基本原理如下: 当有外置 USB 插入的时候,会产生 /proc/scsi/usb-storage 目录,并在其中产生数字文件(形如 1 2 3 4),此文件存储了设备相关信息。 ...
  • 根据指定盘符获取硬盘序列号

    千次阅读 2018-08-17 17:34:27
    在项目中遇到了一个需要根据指定的盘符获取对应的磁盘的序列号,开始在网上查找都没有这种案例,于是自己翻阅了资料总结了下面的方法获取指定盘符对应的磁盘的序列号 public static int GetHDSerial(string drive...

    在项目中遇到了一个需要根据指定的盘符获取对应的磁盘的序列号,开始在网上查找都没有这种案例,于是自己翻阅了资料总结了下面的方法获取指定盘符对应的磁盘的序列号   

    public static int GetHDSerial(string driveLetter, StringBuilder serialNumber)
            {
                try
                {
                    ManagementObjectSearcher mc1 = new ManagementObjectSearcher("select * from Win32_DiskDrive");
                    Dictionary<int, string> dic_indexAndServerNumber = new Dictionary<int, string>();
                    foreach (ManagementObject item in mc1.Get())
                    {
                        int index = int.Parse(item["Index"].ToString());
                        string SerialNumber = item["SerialNumber"].ToString().Trim();
                        if (!dic_indexAndServerNumber.ContainsKey(index))
                        {
                            dic_indexAndServerNumber.Add(index, SerialNumber);
                        }
                    }
                    mc1 = new ManagementObjectSearcher("select * from Win32_LogicalDiskToPartition");
                    Dictionary<string, string> dic_logicaldisk = new Dictionary<string, string>();
                    foreach (ManagementObject item in mc1.Get())
                    {
                        string driname = item["Dependent"].ToString().Split('=')[1].Split(':')[0].Replace("\"", "");
                        driveLetter = driveLetter.Replace(":","");
                        driveLetter = driveLetter.ToUpper();
                        if (driveLetter == driname)
                        {
                            int index = int.Parse(item["Antecedent"].ToString().Split('=')[1].Split(',')[0].Split('#')[1]);
                            if (dic_indexAndServerNumber.ContainsKey(index))
                            {
                                serialNumber.Append(dic_indexAndServerNumber[index]);
                                return 0;
                            }
                        }

                    }
                    return -1;
                }
                catch (Exception ex)
                {
                    return -1;
                }
            }

    展开全文
  • 通过WMI获得硬盘序列号或其他信息

    千次阅读 2009-01-02 14:23:00
    工程人员今天反馈,我们的程序在vista下不能获得机器码(硬盘序列号)。经过Google查找资料和MSDN的帮助终于搞定。 网上很多VB.NET的代码示例这里就不说了。 C# string info=""; ManagementClass mc = new ...

    工程人员今天反馈,我们的程序在vista下不能获得机器码(硬盘序列号)。经过Google查找资料和MSDN的帮助终于搞定。

     

    网上很多VB.NET的代码示例这里就不说了。

     

    C#

     

     string info="";
       ManagementClass mc = new ManagementClass("Win32_PhysicalMedia");
       ManagementObjectCollection moc=mc.GetInstances();
       foreach(ManagementObject mo in moc)
       {
        info = mo.Properties["SerialNumber"].Value.ToString();
       }
       moc=null;
       mc=null;
       
       textBox1.Text = info;

     

    注意添加:System.Management引用。在代码的前面添加using System.Management;

    添加引用?不会,不可能?介绍他的方法:

    在vs.net 2003(我最喜欢用的,当然我的机器不喜欢用更高的版本太慢)

    Project->Add Reference-> .NET 查找->System.Management ->点击“Select”按钮->点击“ok”按钮即可。

     

    C++的方法,这个方法查找的资料最少了,通过MSDN一下子搞定,都是他上面的代码。我修改一下为了获得硬盘序列号

     HRESULT hres;

        // Step 1: --------------------------------------------------
        // Initialize COM. ------------------------------------------

        hres =  CoInitializeEx(0, COINIT_MULTITHREADED);
        if (FAILED(hres))
        {
            cout << "Failed to initialize COM library. Error code = 0x"
                << hex << hres << endl;
            return ;                  // Program has failed.
        }

        // Step 2: --------------------------------------------------
        // Set general COM security levels --------------------------
        // Note: If you are using Windows 2000, you need to specify -
        // the default authentication credentials for a user by using
        // a SOLE_AUTHENTICATION_LIST structure in the pAuthList ----
        // parameter of CoInitializeSecurity ------------------------

        hres =  CoInitializeSecurity(
            NULL,
            -1,                          // COM authentication
            NULL,                        // Authentication services
            NULL,                        // Reserved
            RPC_C_AUTHN_LEVEL_DEFAULT,   // Default authentication
            RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation 
            NULL,                        // Authentication info
            EOAC_NONE,                   // Additional capabilities
            NULL                         // Reserved
            );

                         
        if (FAILED(hres))
        {
            cout << "Failed to initialize security. Error code = 0x"
                << hex << hres << endl;
            CoUninitialize();
            return ;                    // Program has failed.
        }
       
        // Step 3: ---------------------------------------------------
        // Obtain the initial locator to WMI -------------------------

        IWbemLocator *pLoc = NULL;

        hres = CoCreateInstance(
            CLSID_WbemLocator,            
            0,
            CLSCTX_INPROC_SERVER,
            IID_IWbemLocator, (LPVOID *) &pLoc);
     
        if (FAILED(hres))
        {
            cout << "Failed to create IWbemLocator object."
                << " Err code = 0x"
                << hex << hres << endl;
            CoUninitialize();
            return ;                 // Program has failed.
        }

        // Step 4: -----------------------------------------------------
        // Connect to WMI through the IWbemLocator::ConnectServer method

        IWbemServices *pSvc = NULL;
     
        // Connect to the root/cimv2 namespace with
        // the current user and obtain pointer pSvc
        // to make IWbemServices calls.
        hres = pLoc->ConnectServer(
             _bstr_t(L"ROOT//CIMV2"), // Object path of WMI namespace
             NULL,                    // User name. NULL = current user
             NULL,                    // User password. NULL = current
             0,                       // Locale. NULL indicates current
             NULL,                    // Security flags.
             0,                       // Authority (e.g. Kerberos)
             0,                       // Context object
             &pSvc                    // pointer to IWbemServices proxy
             );
       
        if (FAILED(hres))
        {
            cout << "Could not connect. Error code = 0x"
                 << hex << hres << endl;
            pLoc->Release();    
            CoUninitialize();
            return ;                // Program has failed.
        }

        cout << "Connected to ROOT//CIMV2 WMI namespace" << endl;


        // Step 5: --------------------------------------------------
        // Set security levels on the proxy -------------------------

        hres = CoSetProxyBlanket(
           pSvc,                        // Indicates the proxy to set
           RPC_C_AUTHN_WINNT,           // RPC_C_AUTHN_xxx
           RPC_C_AUTHZ_NONE,            // RPC_C_AUTHZ_xxx
           NULL,                        // Server principal name
           RPC_C_AUTHN_LEVEL_CALL,      // RPC_C_AUTHN_LEVEL_xxx
           RPC_C_IMP_LEVEL_IMPERSONATE, // RPC_C_IMP_LEVEL_xxx
           NULL,                        // client identity
           EOAC_NONE                    // proxy capabilities
        );

        if (FAILED(hres))
        {
            cout << "Could not set proxy blanket. Error code = 0x"
                << hex << hres << endl;
            pSvc->Release();
            pLoc->Release();    
            CoUninitialize();
            return ;               // Program has failed.
        }

        // Step 6: --------------------------------------------------
        // Use the IWbemServices pointer to make requests of WMI ----

        // For example, get the name of the operating system
        IEnumWbemClassObject* pEnumerator = NULL;
        hres = pSvc->ExecQuery(
            bstr_t("WQL"),
            bstr_t("SELECT * FROM Win32_PhysicalMedia"),
            WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
            NULL,
            &pEnumerator);
       
        if (FAILED(hres))
        {
            cout << "Query for operating system name failed."
                << " Error code = 0x"
                << hex << hres << endl;
            pSvc->Release();
            pLoc->Release();
            CoUninitialize();
            return ;               // Program has failed.
        }

        // Step 7: -------------------------------------------------
        // Get the data from the query in step 6 -------------------
     
        IWbemClassObject *pclsObj;
        ULONG uReturn = 0;
      
        while (pEnumerator)
        {
            HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1,
                &pclsObj, &uReturn);

            if(0 == uReturn)
            {
                break;
            }

            VARIANT vtProp;
            VariantInit(&vtProp);

            // Get the value of the Name property
            hr = pclsObj->Get(L"SerialNumber", 0, &vtProp, 0, 0);
            wcout << " OS Name : " << vtProp.bstrVal << endl;
            VariantClear(&vtProp);
        }

        // Cleanup
        // ========
       
        pSvc->Release();
        pLoc->Release();
        pEnumerator->Release();
        pclsObj->Release();
        CoUninitialize();

     

    希望大家都行动起来将自己的成果展示给大家看。多多看看 看雪论坛 到了那里才知道自己的无知。那天那个大侠自己写个操作系统,争取这个大侠早日出现!

    展开全文
  • 在调用system命令读写硬盘序列号的过程中遇到问题,报错如下: sudo: no tty present and no askpass program 发现此问题是由于帐号并没有开启免密码导致的 。 查找资料,解决方法如下: 方法一: sudo isudo...

    在调用system命令读写硬盘序列号的过程中遇到问题,报错如下:

    sudo: no tty present and no askpass program

    发现此问题是由于帐号并没有开启免密码导致的 。

    查找资料,解决方法如下:

    方法一:

    sudo isudo

    然后在最末尾添加:

    username ALL = NOPASSWD: /fullpath/to/command,/fullpath/to/othercommand
    
    eg:
    john ALL = NOPASSWD: /sbin/poweroff,/sbin/start,sbin/stop

    会允许用户John在进行poweroff,start,stop的时候不需要密码。这里我使用了最简单的方式,如下:

    john ALL = NOPASSWD: ALL

    添加完成以后就可以无须密码进行sudo操作了。(亲测可用

    方法二:

    1    打开sudoers

    vi /etc/sudoers

    2    添加免密码

    john ALL = NOPASSWD: ALL

     

    读取硬盘序列号的方法:

    if(system("sudo hdparm -I /dev/sda | grep Serial >> tmpGenuine.txt")>=0)
    {
            QFile *tmpFile = new QFile("tmpGenuine.txt");//临时存放文件
            if(tmpFile->open(QIODevice::ReadOnly|QIODevice::Text))
            {
                while(!tmpFile->atEnd())
                {
                    QString tmpLine;
                    tmpLine = tmpFile->readLine();
                    tmpLine.indexOf(rx2);
                    genuineNum += rx2.cap(1);
                }
                qDebug()<<"genuineNum:"<<genuineNum;
            }
            tmpFile->close();
    }
    else
    {
           qDebug()<<"can not get the Serial Num";
           return 0;
    }

     

    转载于:https://www.cnblogs.com/wanzaiyimeng/p/5895670.html

    展开全文
  • using System; using System.Drawing; using System.IO; using System.Runtime.InteropServices; using System.Security; using System.Text;...//using Sanxing.Share.Properties;... /// 执行需要调用 <b>Win32</b> API ...
  • virtualbox-修改硬盘的序列号等信息最近装一款软件作研究,需要用硬盘序列号来验证。之前在另一台服务器已经安装过的,如果能把当前硬盘的序列号改为和原服务器的硬盘一致就少了很多注册相关的麻烦了。 根据这一想法...


    最近装一款软件作研究,需要用硬盘序列号来验证。之前在另一台服务器已经安装过的,如果能把当前硬盘的序列号改为和原服务器的硬盘一致就少了很多注册相关的麻烦了。 根据这一想法,我在 vbox 里帮助里查找到

     

    9.5.3. Configuring the hard disk vendor product data (VPD)
    VirtualBox reports vendor product data for its virtual hard disks which consist of hard disk serial 
    number, firmware revision and model number. These can be changed using the following commands:
    改序列号
    VBoxManage setextradata "My VM"      "VBoxInternal/Devices/ahci/0/Config/Port0/SerialNumber"      "serial"   
    改固件版本
    VBoxManage setextradata "My VM"      "VBoxInternal/Devices/ahci/0/Config/Port0/FirmwareRevision"     "firmware"
    改供应商信息
    VBoxManage setextradata "My VM"      "VBoxInternal/Devices/ahci/0/Config/Port0/ModelNumber"      "model"

    上面的命令是针对 SATA 接口硬盘的,"My VM" 是虚拟机的名称, ahci 表是硬盘的类型 ,Port0 表示第一块硬盘. 如果是 IDE 接口 用 PrimaryMaster ,PrimarySlave 等标识硬盘,类型 是 piix3ide.  对 IDE 接口命令:

    VBoxManage setextradata "XP"      "VBoxInternal/Devices/piix3ide/0/Config/PrimaryMaster/SerialNumber"      "9AC00E9F"
    命令意义:修改虚拟机 IDE 的主硬盘的序列号为 9AC00E9F

    命令执行完后,其实是修改了对应虚拟机的配置文件 " .VirtualBox/Machines/xp/XP.XML" , 在 <ExtraData> 结点下添加了相应设置,因此实际上也可以不用命令而直接修改这个配置文件,效果是一样的。

     

        <ExtraData>

          <ExtraDataItem name="GUI/AutoresizeGuest" value="on"/>

          <ExtraDataItem name="GUI/Fullscreen" value="off"/>

          <ExtraDataItem name="GUI/LastCloseAction" value="powerOff"/>

          <ExtraDataItem name="GUI/LastWindowPostion" value="239,49,1024,816"/>

          <ExtraDataItem name="GUI/MiniToolBarAlignment" value="bottom"/>

          <ExtraDataItem name="GUI/MiniToolBarAutoHide" value="on"/>

          <ExtraDataItem name="GUI/SaveMountedAtRuntime" value="yes"/>

          <ExtraDataItem name="GUI/Seamless" value="off"/>

          <ExtraDataItem name="GUI/ShowMiniToolBar" value="yes"/>

          <ExtraDataItem name="VBoxInternal/Devices/piix3ide/0/Config/PrimarySlave/SerialNumber" value="9AC00E9F"/>

        </ExtraData>

    展开全文
  • 获得硬盘的ID序列号

    2017-04-01 16:50:26
    3.简单,方便,实用 4.实例可以自行改用 5.如有非法,本人无法律责任,由改动代码人负责! 6.需要更多本人作品,查找标签“朱建强” 7.请下载,杀毒后再使用!
  • 问:   如何用快手得到本机硬盘的序列号    ... 在打开的页面,以获取硬盘序列号的演示代码   //声明要用到的API GetVolumeInformation = ::Kernel32.api("GetVolumeInf
  • 硬盘快满了,怎么办?查找重复文件,绿色版 链接:https://pan.baidu.com/s/1nbhRhninawNLK5CHZfanWA 提取码:yu37 序列号 TDFP-XWAL-EPNX-ALWN-LLLLLL 它非常易于使用,只需要选择资源(驱动器,文件夹,文件),...
  • 硬盘ID及型号的读取

    千次阅读 2009-07-08 11:21:00
    以前做的客户端根据硬盘序列号、主板信息及网卡信息进行加密控制问题,最近发现一个问题,有一个客户端的硬盘ID会变动,查找相关资料及现场跟踪发现,有的系统会把U认为是默认磁盘,所以插上U盘后,读取的是U的...
  • 硬盘扇区读写技术

    热门讨论 2011-10-11 22:25:18
    35\HDINFO 第35章的35.1 HDINFO.EXE 处理硬盘序列号 35\PWINFO 第35章的35.2 PWINFO.EXE 处理密钥 35\HDLOCK 第35章的35.3 HDLOCK.EXE 硬盘锁 35\HHDLOCK 第35章的35.4 HHDLOCK.EXE 硬盘锁(汉显)
  • 35\HDINFO 第35章的35.1 HDINFO.EXE 处理硬盘序列号 35\PWINFO 第35章的35.2 PWINFO.EXE 处理密钥 35\HDLOCK 第35章的35.3 HDLOCK.EXE 硬盘锁 35\HHDLOCK 第35章的35.4 HHDLOCK.EXE 硬盘锁(汉显)
  • 最终解决方案:在同事的帮助下,使用windbg工具,远程调试客户机器,找到原因所在及问题出错位置和函数,出错位置为获取用户硬盘序列号的时候,buf[20]全部为空格,在左右空格并两两颠倒的时候操作内存
  • 不少朋友问我,电脑上的光驱坏了,要重装系统怎么办?下面我就给大家介绍如何从从硬盘安装系统。  一、准备工作  1、准备一个原版XP SP3系统,用WINRAR解压把...查找XP系统的安装序列号,记下来备用。本文以原版
  • 如果有则获取移动设备的设备号,就是文件名,打开这个文件名从里面可以提前设备的序列号 2)根据设备号,在/sys/class/scsi_device/目录去找,找以该设备号开头的文件夹 这个时候需要遍历这些文件夹了 3)遍历过程:...
  • 无奈.上网查找相关资料.大致了解了一下.总之就是先要获得某些... 网上找了好多相关资料后,我就用VC6.0遍了一个能得到网卡地址和硬盘物理序列号的程序,本打算用jni调用,可后来发现IDE硬盘物理序列号只能在管理员权限下
  • 这两天,因为程序中的一个功能需要用到硬件的一些信息,如处理器的序列号硬盘序列号,和网卡的物理地址,查找了一下这方面的资料,由于网上这方面的资料也是比较多,但多而不全,找起来比较花气力。现将这两天的...
  • Ashampoo HDD Control 3 Corporate能查看硬盘硬件信息,如硬盘的型号序列号、固件版本及物理磁盘索引,唯一的64位ID信息,网络模块此模块让管理员可访问网络上的电脑并监控连接的硬盘. 可监控 U 盘及 RAID ...
  • 通过查找觉得这款硬件信息修改大师还是不错,纯绿色版,一键更改,能够自动修改电脑硬件的所有信息,包括用户和组、网卡mac地址、产品ID号、系统注册信息、系统版本及安装时间、系统序列号、硬盘序列号、游览器信息...
  • 序列号就是将类变成字符的形式保存在硬盘上,通过特定的方式,能直接读取,解析出这个类中的成员变量和方法等,这个过程叫序列化,反序列号就是将字符在解析会类) volatile:这个关键词的作用是能保证,被此...
  • 软件介绍: 安装说明:压缩包内附序列号,照里面填写即可成功注册。...能够从回收站中恢复已经清空的文件,能够对FAT分区进行快速索引查找并恢复,其先进的恢复技术可以从已经格式化或者重新分区的硬盘中恢复数据。
  • 64位程序获取CPUID,不使用汇编指令

    千次阅读 2016-04-22 12:02:16
    最近项目中想使用CPU,硬盘,网卡的ID进行加密授权验证,但是CPU的序列号获取网上都是一些使用内嵌汇编的方式,然后我的是64位程序,微软不支持内嵌汇编指令,只好研究替代方式了。进过查找,发现微软推出了__cpuid...
  • SystemMechanic6

    2009-08-26 10:18:34
    强大的多功能系统维护工具,集多个强大的系统维护工具于一身,可以查找并清除垃圾文件、抹去上网痕迹(包括历史、缓存、Cookie等)、查找并修复坏的快捷方式、移去无效的卸载信息、查找并移去重复的文件、清洁系统...
  • 格式化恢复能恢复被格式化的分区或硬盘,USB设备,Zip设备和相机的记忆卡里的丢失文件。原始恢复能够启用深度扫描查找和恢复那些删除恢复和分区恢复模式找不到的数据。分区恢复能帮助查找丢失的,删除的,重置大小...
  • 请使用 --fake-serial 选项手动指定硬盘序列号: Inappropriate ioctl for device (25) [2020/9/9 2:59:03][I] We send one! 521 1512 [2020/9/9 2:59:03][I] We got one! 60 1512 [2020/9/9 2:59:03][I] We got one!...
  • Visual_C++精彩实例详解

    2010-03-23 21:20:19
    第45章 获取硬盘序列号 第46章 消息循环重载实例 第47章 运行后自销毁的程序 第48章 VC中OpenGL编程实现虚拟现实 第49章 图像复合文档高级编程 第50章 基于卫星通信的汽车牌照识别监控系统 =======================...

空空如也

空空如也

1 2 3 4 5
收藏数 96
精华内容 38
关键字:

查找硬盘序列号