在Windows XP下,是否有任何简单的方法来更改或欺骗USB设备的供应商和产品ID?(更改相应的描述性字符串可能也不错)
举例说,有一个有用的程序需要一个特定的设备,但您不知道为什么当您已经拥有一个非常相似的设备(该程序很可能与该程序一起使用)时,您应该购买一个新设备。
我已经做了很多Google搜索,并且显然可以在Linux下完成,所以我想到要在Linux下的VM中运行Windows,但这会带来一些不便。
在Windows XP下,是否有任何简单的方法来更改或欺骗USB设备的供应商和产品ID?(更改相应的描述性字符串可能也不错)
举例说,有一个有用的程序需要一个特定的设备,但您不知道为什么当您已经拥有一个非常相似的设备(该程序很可能与该程序一起使用)时,您应该购买一个新设备。
我已经做了很多Google搜索,并且显然可以在Linux下完成,所以我想到要在Linux下的VM中运行Windows,但这会带来一些不便。
Answers:
您可以使用devcon(此处列出的最简单的安装方法)来完成此操作,该工具是Windows DDK / WDK随附的实用程序。您可以在链接中找到适用于Windows XP的独立版本。
特别是,devcon的sethwid命令可能能够完成您想要的操作。有关某些教程,请参见示例页面。
我不确定这是否能完全满足您的要求,但是我强烈感觉到,如果不编写自己的过滤器驱动程序,它可能会与您获得的效果差不多。如果确实需要编写自己的驱动程序,请抓住WDK并阅读src \ setup \ devcon中的devcon源代码。
您也许还可以通过其他方式使用devcon来实现您的目标,但是如果没有进一步的细节,很难确切地说出如何做。祝好运!
USB供应商ID /产品ID可能被硬编码在设备的固件中,因此在不破解固件的情况下就无法更改。
由于大多数固件都可以防止更改,因此很可能会阻塞USB设备。
不好意思,但是我认为这是不可能的。
我还没有完全满足您的要求,但这可能会为您提供一个起点。另外,我只在Vista之前的版本中做过这种事情。
设备管理器和注册表用于将字符串与硬件设备关联的信息是从设备随附的.INF文件中初始化的。幸运的是,.INF文件是文本文件,其结构类似于.INI文件,因此易于使用。更改现有设备的“身份”:
WINDOWS\INF
目录并找到正确的文件。可能需要在所有.INF文件中搜索与设备关联的唯一字符串。希望您的应用程序仅在寻找该字符串。如果它正在寻找唯一的硬件ID(您将在.INF文件中以总线和硬件ID号(例如bus \ VID_nnnn&PID_xxxx)的形式看到它),则此技术将不起作用。
sethwid
不要触摸它:(