UPN / loggedOnUser - domain clients (#7627)

stephannn committed Feb 18, 2026 at 12:46 UTC 1f912bdf65ccc5a2590eb4b6237793db0dbf3c3f
1 file changed +22 -1
agents/meshcore.js
+22 -1
@@ -137,6 +137,23 @@ function getDomainInfo() {
137 return (ret);
138 }
139
140 +function getLoggedOnUserBySessionId(sessionId) {
141 + try {
142 + const result = require('win-registry').QueryKey(require('win-registry').HKEY.LocalMachine,
143 + ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Authentication\\LogonUI\\SessionData\\" + sessionId), 'LoggedOnUser'
144 + );
145 +
146 + if (result) {
147 + return result.replace(/^[^\\]+\\/, '');
148 + }
149 +
150 + return null;
151 +
152 + } catch (err) {
153 + return null;
154 + }
155 +}
156 +
157 function getLogonCacheKeys() {
158 var registry = require('win-registry');
159 var HKLM = registry.HKEY.LocalMachine;
@@ -799,7 +816,11 @@ function onUserSessionChanged(user, locked) {
816 }
817 } else if (a[i].Domain != null) {
818 if (ret != null && ret.PartOfDomain === true) {
802 - meshCoreObj.upnusers.push(a[i].Username + '@' + ret.Domain);
819 + var loggedOnUser = getLoggedOnUserBySessionId(a[i].SessionId);
820 + if(loggedOnUser == null || (/^[^@]+@[^@]+\.[^@]+$/.test(loggedOnUser) == false)){
821 + loggedOnUser = a[i].Username + '@' + ret.Domain;
822 + }
823 + meshCoreObj.upnusers.push(loggedOnUser);
824 } else if (getJoinState() == 4) { // One account with Microsoft Account
825 var userobj = getLogonCacheKeys();
826 if(userobj && userobj.length > 0){