ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

Comment trouver le SID (security identifyer) , domaine et le nom de l'utilisateur courant   



L'auteur

Mike Gagnon
Canada Canada
Membre Simple
# 0000000025
enregistré le 14/10/2004

http://www.mcrgsoftware.com
Gagnon Mike
Pte Claire Quebec - Canada
de la société MCRG Software
Fiche personnelle


Note des membres
pas de note

Contributions > 05 - API et appels systèmes

Comment trouver le SID (security identifyer) , domaine et le nom de l'utilisateur courant
# 0000000772
ajouté le 22/09/2010 02:50:34 et modifié le 22/09/2010
consulté 2017 fois
Niveau initié

Version(s) Foxpro :
VFP 9.0
VFP 8.0
VFP 7.0
VFP 6.0
VFP 5.0

Code source :
Clear
Declare RtlMoveMemory In kernel32 As MemToStr;
STRING @dst, Integer src, Integer nLength
Declare Integer LocalFree In kernel32 Integer Hmem
Declare Integer GetUserName In advapi32;
STRING @lpBuffer, Integer @nSize
Declare Integer LocalAlloc In kernel32;
INTEGER uFlags, Integer uBytes
Declare Integer LookupAccountName In advapi32;
STRING lpSystemName, String lpAccountName,;
INTEGER Sid, Integer @cbSid,;
STRING @RefDomainName, Integer @cchRefDomainName,;
INTEGER @peUse
Declare Integer ConvertSidToStringSid In advapi32;
INTEGER Sid, Integer @StringSid
Declare Long LocalSize In kernel32 Integer Hmem
nSize = 250
cBuffer = Repli(Chr(0), nSize)
If GetUserName (@cBuffer, @nSize) > 0
cBuffer = Strtran(Alltrim(Substr (cBuffer, 1, nSize)), Chr(0),"")
"User:", cBuffer
Do GetSid With cBuffer
Endif


Procedure GetSid(cAccount)
Local hSid, nSidsize, cDomain, nDomainsize, peUse

nSidsize=128
hSid=LocalAlloc(0, nSidsize)

nDomainsize=250
cDomain=Replicate(Chr(0), nDomainsize)

peUse=0

* retrieve security identifier (SID) for the account name
= LookupAccountName(Null, m.cAccount,;
hSid, @nSidsize, @cDomain, @nDomainsize, @peUse)

* convert the SID to string format
Local nBuffer, nBufsize, cSid
nBuffer=0
= ConvertSidToStringSid(hSid, @nBuffer)

nBufsize = LocalSize(nBuffer)
cSid = Replicate(Chr(0), nBufsize)
= MemToStr(@cSid, nBuffer, nBufsize)

= LocalFree(nBuffer)
= LocalFree(hSid)

"Domain:"Substr(cDomain, 1, At(Chr(0),cDomain)-1)
"SID:", cSid



Commentaires
le 23/02/2013, FoxInCloud a écrit :
Mike,

La doc Windows dit :
GetUserName function (Windows)
"Retrieves the name of the user associated with the current thread."

Sais-tu comment retrouver le nom de l'utilisateur ayant ouvert la session courante le cas échéant ?

En effet, un objet COM VFP peut s'exécuter sous une compte différent de la session courante (via DCOM impersonation) et/ou sans session utlisateur ouverte.

Merci,
thn

le 24/02/2013, Mike Gagnon a écrit :
Normallement tu changerais le persmission d'accès au DCOM pour rouler en tant qu'administrateur du serveur, donc peut importe qui a une session d'ouverte. À moins que j'ai mal compris ta question.


Publicité

Les pubs en cours :

www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2014.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0