Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 访问移动设备属性数据_C#_Usb_Wmi Query - Fatal编程技术网

C# 访问移动设备属性数据

C# 访问移动设备属性数据,c#,usb,wmi-query,C#,Usb,Wmi Query,有没有办法通过C#访问移动设备属性。其目的是显示设备的序列号和iOS版本,以便像iPhone一样连接USB 使用如下所示的WMI查询,可以访问通过计算机管理器(如DeviceID或PnpDeviceID)访问的基本信息。然而,我一直无法找到一个属性,提供设备序列号等 ManagementObjectSearcher(@"Select * From Win32_USBHub WHERE Description LIKE 'Apple Mobile Device%'") 或 或 我所指的设备属性菜

有没有办法通过C#访问移动设备属性。其目的是显示设备的序列号和iOS版本,以便像iPhone一样连接USB

使用如下所示的WMI查询,可以访问通过计算机管理器(如DeviceID或PnpDeviceID)访问的基本信息。然而,我一直无法找到一个属性,提供设备序列号等

ManagementObjectSearcher(@"Select * From Win32_USBHub WHERE Description LIKE 'Apple Mobile Device%'")

我所指的设备属性菜单如下图所示,可通过右键单击设备,然后单击属性来访问


如果您想访问诸如iOS版本之类的属性,最好使用

您可以安装imobiledevice net NuGet软件包,然后运行如下命令:

ReadOnlyCollection<string> udids;
int count = 0;

var idevice = LibiMobileDevice.Instance.iDevice;
var lockdown = LibiMobileDevice.Instance.Lockdown;

var ret = idevice.idevice_get_device_list(out udids, ref count);

if (ret == iDeviceError.NoDevice)
{
    // Not actually an error in our case
    return;
}

ret.ThrowOnError();

// Get the device name
foreach (var udid in udids)
{
    iDeviceHandle deviceHandle;
    idevice.idevice_new(out deviceHandle, udid).ThrowOnError();

    LockdownClientHandle lockdownHandle;
    lockdown.lockdownd_client_new_with_handshake(deviceHandle, out lockdownHandle, "Quamotion").ThrowOnError();

    string deviceName;
    lockdown.lockdownd_get_device_name(lockdownHandle, out deviceName).ThrowOnError();

    deviceHandle.Dispose();
    lockdownHandle.Dispose();
}
ReadOnlyCollection udid;
整数计数=0;
var idevice=LibiMobileDevice.Instance.idevice;
var lockdown=LibiMobileDevice.Instance.lockdown;
var ret=idevice.idevice\u get\u device\u list(out udid,ref count);
if(ret==iDeviceError.NoDevice)
{
//在我们的案例中,这实际上不是一个错误
返回;
}
ret.ThrowOnError();
//获取设备名称
foreach(udid中的变量udid)
{
iDeviceHandle设备手柄;
idevice.idevice_new(out deviceHandle,udid).ThrowOnError();
锁止手柄锁止手柄;
锁定。通过握手(deviceHandle,out lockdownHandle,“Quamotion”)。ThrowOnError();
字符串设备名;
lockdown.lockdown_get_device_name(lockdownHandle,out deviceName).ThrowOnError();
deviceHandle.Dispose();
lockdownHandle.Dispose();
}
锁定类将允许您访问其他属性,例如iOS版本


不过,它确实依赖于iTunes。

如果您想访问诸如iOS版本之类的属性,最好的选择可能是使用

您可以安装imobiledevice net NuGet软件包,然后运行如下命令:

ReadOnlyCollection<string> udids;
int count = 0;

var idevice = LibiMobileDevice.Instance.iDevice;
var lockdown = LibiMobileDevice.Instance.Lockdown;

var ret = idevice.idevice_get_device_list(out udids, ref count);

if (ret == iDeviceError.NoDevice)
{
    // Not actually an error in our case
    return;
}

ret.ThrowOnError();

// Get the device name
foreach (var udid in udids)
{
    iDeviceHandle deviceHandle;
    idevice.idevice_new(out deviceHandle, udid).ThrowOnError();

    LockdownClientHandle lockdownHandle;
    lockdown.lockdownd_client_new_with_handshake(deviceHandle, out lockdownHandle, "Quamotion").ThrowOnError();

    string deviceName;
    lockdown.lockdownd_get_device_name(lockdownHandle, out deviceName).ThrowOnError();

    deviceHandle.Dispose();
    lockdownHandle.Dispose();
}
ReadOnlyCollection udid;
整数计数=0;
var idevice=LibiMobileDevice.Instance.idevice;
var lockdown=LibiMobileDevice.Instance.lockdown;
var ret=idevice.idevice\u get\u device\u list(out udid,ref count);
if(ret==iDeviceError.NoDevice)
{
//在我们的案例中,这实际上不是一个错误
返回;
}
ret.ThrowOnError();
//获取设备名称
foreach(udid中的变量udid)
{
iDeviceHandle设备手柄;
idevice.idevice_new(out deviceHandle,udid).ThrowOnError();
锁止手柄锁止手柄;
锁定。通过握手(deviceHandle,out lockdownHandle,“Quamotion”)。ThrowOnError();
字符串设备名;
lockdown.lockdown_get_device_name(lockdownHandle,out deviceName).ThrowOnError();
deviceHandle.Dispose();
lockdownHandle.Dispose();
}
锁定类将允许您访问其他属性,例如iOS版本


不过,它确实依赖于iTunes。

将下面的代码放在
锁定之后。通过握手(deviceHandle、out lockdownHandle、“Quamotion”)锁定客户端新客户端。ThrowOnError()您将能够访问序列号或iOS版本等值。这只是一个粗略的例子:

        string t1;
        string t2;

        PlistHandle tested1;
        PlistHandle tested2;

        //Find serial number in plist
        lockdown.lockdownd_get_value(lockdownHandle, null, "SerialNumber", out 
        tested1);

        //Find IOS version in plist
        lockdown.lockdownd_get_value(lockdownHandle, null, "ProductVersion", out 
         tested2);

        //Get string values from plist
        tested1.Api.Plist.plist_get_string_val(tested1, out t1);
        tested2.Api.Plist.plist_get_string_val(tested2, out t2);

        //Place data in textboxes
        serialTXT.Text = t1.Trim();
        verTXT.Text = t2.Trim();

将下面的代码放在
lockdown.lockdown之后,使用握手(deviceHandle,out lockdownHandle,“Quamotion”)。ThrowOnError()您将能够访问序列号或iOS版本等值。这只是一个粗略的例子:

        string t1;
        string t2;

        PlistHandle tested1;
        PlistHandle tested2;

        //Find serial number in plist
        lockdown.lockdownd_get_value(lockdownHandle, null, "SerialNumber", out 
        tested1);

        //Find IOS version in plist
        lockdown.lockdownd_get_value(lockdownHandle, null, "ProductVersion", out 
         tested2);

        //Get string values from plist
        tested1.Api.Plist.plist_get_string_val(tested1, out t1);
        tested2.Api.Plist.plist_get_string_val(tested2, out t2);

        //Place data in textboxes
        serialTXT.Text = t1.Trim();
        verTXT.Text = t2.Trim();

经过一些研究,我能够访问版本和序列号,可能有一种更直接的方法。我将把代码放在其他人的另一个答案中。经过一些研究,我能够访问版本和序列号,可能有一种更直接的方法。我会为其他人把代码放在另一个答案中。