add microsoft accounts upn #7409
Signed-off-by: si458 <simonsmith5521@gmail.com>
si458 committed
Jan 31, 2026 at 12:11 UTC
aa864349e307a3a95a0407e69af8294eb9a28d8f
1 file changed
+24
-19
agents/meshcore.js
+24
-19
@@ -208,26 +208,31 @@ function getLogonCacheKeys() {
208
209
function getJoinState() {
210
if (process.platform != 'win32') { return -1; }
211
-
211
var isAzureAD = false;
212
var isOnPrem = false;
214
-
213
+ var isHybrid = false;
214
+ var isMicrosoft = false;
215
// 1 Azure AD / Entra ID
216
try {
217
const joinInfo = require('win-registry').QueryKey(require('win-registry').HKEY.LocalMachine, 'SYSTEM\\CurrentControlSet\\Control\\CloudDomainJoin\\JoinInfo');
218
isAzureAD = Array.isArray(joinInfo.subkeys) && joinInfo.subkeys.length > 0;
219
} catch (e) {}
220
-
220
// 2 On-prem AD
221
try {
222
const tcpip = require('win-registry').QueryKey(require('win-registry').HKEY.LocalMachine, 'SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters','Domain');
223
isOnPrem = !!(tcpip !== "" || null);
224
} catch (e) {}
226
-
227
- if (isAzureAD && isOnPrem) return 12;
228
- if (isAzureAD) return 1;
225
+ // 4 Hybrid AD
226
+ isHybrid = isAzureAD && isOnPrem;
227
+ // 8 Microsoft Account
228
+ try {
229
+ const userAccounts = require('win-registry').QueryKey(require('win-registry').HKEY.LocalMachine, 'SOFTWARE\\Microsoft\\IdentityStore\\LogonCache\\D7F9888F-E3FC-49b0-9EA6-A85B5F392A4F');
230
+ isMicrosoft = Array.isArray(userAccounts.subkeys) && userAccounts.subkeys.length > 0;
231
+ } catch (e) {}
232
+ if (isMicrosoft) return 8;
233
+ if (isHybrid) return 4;
234
if (isOnPrem) return 2;
230
-
235
+ if (isAzureAD) return 1;
236
return 0;
237
238
}
@@ -783,30 +788,30 @@ function onUserSessionChanged(user, locked) {
788
else if (user && !locked && (JSON.stringify(a[i]) === JSON.stringify(user))) { meshCoreObj.lusers.splice(meshCoreObj.lusers.indexOf(un), 1); }
789
if (u.indexOf(un) == -1) { u.push(un); } // Only push users in the list once.
790
if ((a[i].Domain != null && a[i].Domain == 'AzureAD') || getJoinState() == 1 ){
786
- // AzureAD to-do
787
- // var userGUID = require('win-registry').QueryKey(require('win-registry').HKEY.LocalMachine, 'SYSTEM\\CurrentControlSet\\Control\\CloudDomainJoin\\JoinInfo');
788
- // if (userGUID != null){
789
- // var user = require('win-registry').QueryKey(require('win-registry').HKEY.LocalMachine, 'SYSTEM\\CurrentControlSet\\Control\\CloudDomainJoin\\JoinInfo\\' + userGUID.subkeys[0], 'UserEmail');
790
- // if (user != null) u[i].UPN = user;
791
- // }
791
var userobj = getLogonCacheKeys();
793
-
792
if(userobj && userobj.length > 0){
795
-
793
for (var j = 0; j < userobj.length; j++) {
794
var u = userobj[j];
798
-
799
- if (u && u.SAM && u.SAM[0].trim().toLowerCase() === a[i].Username) {
795
+ if (u && u.SAM && u.SAM[0].trim() === a[i].Username) {
796
meshCoreObj.upnusers.push(u.UPN);
797
break;
798
}
799
}
804
-
800
}
806
-
801
} else if (a[i].Domain != null) {
802
if (ret != null && ret.PartOfDomain === true) {
803
meshCoreObj.upnusers.push(a[i].Username + '@' + ret.Domain);
804
+ } else if (getJoinState() == 8) { // One account with Microsoft Account
805
+ var userobj = getLogonCacheKeys();
806
+ if(userobj && userobj.length > 0){
807
+ for (var j = 0; j < userobj.length; j++) {
808
+ var u = userobj[j];
809
+ if (u && u.SAM && u.SAM.length == 0 && u.UPN && u.UPN != '') {
810
+ meshCoreObj.upnusers.push(u.UPN);
811
+ break;
812
+ }
813
+ }
814
+ }
815
}
816
}
817
}