限制访问设备的主要方法是在设备上设置安全描述符。因此,授予特定用户组的权限是您应该采取的方式。
Windows XP 的确切实现可能与更高版本的 Windows 不同。Windows 8 也有新的可能性。音频混合器 API可以在 Windows XP 中使用。从 Vista 开始,可以使用Windows 多媒体设备 (MMDevice) API。MMDevice API 的属性 store实现。您可以使用IPropertyStore::SetValue
和IPropertyStore::Commit
来更改属性。从 Windows Vista 开始引入统一设备属性模型。有不同的 Windows API 在内部使用 SetupAPI 来访问设备并设置其属性(请参阅此处)。我认为您应该将PKEY_Device_SecuritySDS
属性设置为安全设备。可以使用像SetupDiSetDeviceRegistryProperty这样的旧 API和SetupDiSetClassRegistryProperty在 Windows XP 上设置属性(请参见此处)。
如果我在我的计算机上启动devmgmt.msc
并检查麦克风设备的默认属性,那么我可以看到安全描述符
您需要更改它,以便只有特定的用户组(或用户)才能访问它。
有PKEY_Device_SecuritySDS
和PKEY_Device_Security
属性可以通过SetupDiSetDeviceProperty和SPDRP_SECURITY_SDS
or更改SPDRP_SECURITY
(请参见此处)。SDS 参数 (PKEY_Device_SecuritySDS
或SPDRP_SECURITY_SDS
) 的使用可能更容易,因为它使用可读的安全描述符定义语言 (SDDL)。
更改设备上的安全描述符后,您需要使用SetupDiSetClassInstallParams和SetupDiCallClassInstaller来DIF_PROPERTYCHANGE
重置DICS_PROPCHANGE
设备。您可以在 WinDDK 上的 devcon 实用程序的源代码中找到代码示例。或者,您可以使用CM_Disable_DevNode和CM_Enable_DevNode使用新属性重新启动它。