Skip to content
This repository was archived by the owner on May 20, 2025. It is now read-only.

Commit 8021005

Browse files
abodalevskyRichard Hua
authored andcommitted
Windows - Fix for #713 NullReferenceException due to missing ProcessorId key (#743)
1 parent ff92f4a commit 8021005

File tree

1 file changed

+56
-12
lines changed

1 file changed

+56
-12
lines changed

windows/CodePush.Net46/CodePushUtils.cs

Lines changed: 56 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,26 +28,70 @@ internal async static Task<JObject> GetJObjectFromFileAsync(IFile file)
2828

2929
static string GetDeviceIdImpl()
3030
{
31-
ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
32-
ManagementObjectCollection moc = mos.Get();
33-
string mbId = String.Empty;
31+
var mbId = GetSerialNumber();
32+
var procId = GetProcId();
33+
34+
if (string.IsNullOrEmpty(procId))
35+
{
36+
procId = GetMAC();
37+
}
38+
39+
return procId + '-' + mbId;
40+
}
41+
42+
static string GetSerialNumber()
43+
{
44+
var mos = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
45+
var moc = mos.Get();
46+
var mbId = String.Empty;
47+
3448
foreach (ManagementObject mo in moc)
3549
{
3650
mbId = (string)mo["SerialNumber"];
37-
break;
51+
if (!string.IsNullOrEmpty(mbId))
52+
break;
53+
}
54+
55+
return mbId;
56+
}
57+
58+
static string GetProcId()
59+
{
60+
var mos = new ManagementObjectSearcher("Select * From Win32_processor");
61+
var moc = mos.Get();
62+
var procId = string.Empty;
63+
64+
foreach (ManagementObject mo in moc)
65+
{
66+
procId = (string)mo["ProcessorID"];
67+
if (!string.IsNullOrEmpty(procId))
68+
break;
3869
}
70+
return procId;
71+
}
3972

40-
ManagementObjectCollection mbsList = null;
41-
ManagementObjectSearcher mbs = new ManagementObjectSearcher("Select * From Win32_processor");
42-
mbsList = mbs.Get();
43-
string procId = string.Empty;
44-
foreach (ManagementObject mo in mbsList)
73+
static string GetMAC()
74+
{
75+
var mos = new ManagementObjectSearcher("Select * From Win32_NetworkAdapterConfiguration");
76+
var moc = mos.Get();
77+
var mac = string.Empty;
78+
79+
foreach (ManagementObject mo in moc)
4580
{
46-
procId = mo["ProcessorID"].ToString();
47-
break;
81+
try
82+
{
83+
if ((bool)mo["IPEnabled"])
84+
{
85+
mac = (string)mo["MacAddress"];
86+
break;
87+
}
88+
}
89+
catch (Exception)
90+
{
91+
}
4892
}
4993

50-
return procId + "-" + mbId;
94+
return mac;
5195
}
5296
}
5397
}

0 commit comments

Comments
 (0)