Primeiro, encontre o SID do usuário (no formato de string). O método que você usa irá variar dependendo da sua linguagem de programação. No entanto, aqui é uma maneira de fazer isso (VBScript):
'Note: you must have domain/corporate network connectivity in order to complete this query for a domain account
'This will not work for a remote user that is not connected via VPN, for example.
strUserName = "flesniak"
strNetBIOSDomainName = "DOMAIN" 'Use the computer name if checking local account
Set objWMI = GetObject("winmgmts:\.\root\cimv2")
Set objAccount = objWMI.Get("Win32_UserAccount.Name='" & strUserName & "',Domain='" & strNetBIOSDomainName & "'")
strUserSID = objAccount.SID
Depois de ter o SID, consulte a chave do Registro:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\<SID>
e inspecione o valor da string:
CentralProfile
Se o valor CentralProfile estiver em branco ou inexistente, será um perfil local. Se CentralProfile estiver configurado para ser um caminho UNC, então é um perfil móvel.