在Windows中通过注册表设置USB只能接入存储设备和打印机,可以通过以下Qt代码实现:
完整的注册表配置方案
”`cpp
#include
class USBController { public:
// 设置USB只能使用存储设备和打印机
static bool setUSBStorageAndPrintOnly() {
bool success = true;
// 1. 启用USB存储设备驱动
success &= enableUSBStorage();
// 2. 启用打印机设备
success &= enablePrinters();
// 3. 禁用其他USB设备类
success &= disableOtherDeviceClasses();
// 4. 设置设备安装策略
success &= setInstallationPolicy();
return success;
}
private:
// 启用USB存储设备
static bool enableUSBStorage() {
QSettings usbstor("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\USBSTOR",
QSettings::NativeFormat);
usbstor.setValue("Start", 3); // SERVICE_SYSTEM_START
usbstor.sync();
return (usbstor.status() == QSettings::NoError);
}
// 启用打印机支持
static bool enablePrinters() {
QSettings spooler("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Spooler",
QSettings::NativeFormat);
spooler.setValue("Start", 2); // SERVICE_AUTO_START
spooler.sync();
// USB打印机支持
QProcess::execute("reg", QStringList() << "add"
<< "HKLM\\SYSTEM\\CurrentControlSet\\Control\\Print\\Environments\\Windows x64\\Drivers"
<< "/v" << "Version" << "/t" << "REG_DWORD" << "/d" << "3" << "/f");
return true;
}
// 禁用其他USB设备类
static bool disableOtherDeviceClasses() {
QStringList disabledClasses = {
"{745a17a0-74d3-11d0-b6fe-00a0c90f57da}", // HID (键盘、鼠标等)
"{4d36e96c-e325-11ce-bfc1-08002be10318}", // 智能卡读卡器
"{eec5ad98-8080-425f-922a-dabf3de3f69a}", // WPD (便携设备)
"{4d36e978-e325-11ce-bfc1-08002be10318}", // PCMCIA适配器
"{4d36e97d-e325-11ce-bfc1-08002be10318}", // 系统设备
"{50dd5230-ba8a-11d1-bf5d-0000f805f530}" // 智能电话
};
for (const QString& classGuid : disabledClasses) {
QProcess::execute("reg", QStringList() << "add"
<< QString("HKLM\\SYSTEM\\CurrentControlSet\\Services\\UsbStor\\%1").arg(classGuid)
<< "/v" << "Start" << "/t" << "REG_DWORD" << "/d" << "4" << "/f"); // SERVICE_DISABLED
QProcess::execute("reg", QStringList() << "add"
<< QString("HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows\\DeviceInstallation\\Restrictions\\DenyDeviceIDs")
<< "/v" << classGuid << "/t" << "REG_SZ" << "/d" << "1" << "/f");
}
return true;
}
// 设置设备安装策略(组策略)
static bool setInstallationPolicy() {
QSettings policy("HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\<br/><br/><br/><font size=1 color=#CCCCCC>内容由零声教学AI助手提供,问题来源于学员提问</font>




