oWshNet = CREATEOBJ('wscript.network') ? oWshNet.UserName && login to the local station ? oWshNet.DomainName && login to the current domain If the WSH is not available, you'll need to use the WNetGetUser() API call. It's fairly simple to use, and prototypes in VFP as: DECLARE INTEGER WNetGetUser IN Win32API ; STRING lpResourceName, ; STRING lpUserName, ; INTEGER @lpUserNameLen cUserName = REPL(CHR(0),256) nNameLen = 256 IF WNetGetUser('\\MyServer\SomeShare',@cUsername, @nNameLen) = 0 * The first nNameLen-1 characters of cUserName now contain * the name of the user accessing the resource \\MyServer\SomeShare * which well might not be the WIndows Login name ELSE * Something broke ENDIFDetermining the group membership requires the use of the NetUserGetGroups() API call. Manipulating the result really requires the use of a wrapper .DLL, since the memory used as a buffer to return the group structures needs to remain static and be relesed with NetAPIBufferFree() afterwards. You probably only need the data contained in a GROUP_USERS_INFO_0 structure, which is easier to parse. You need to pass the name of the server whose groups are to be considered; passing a null for the servername resolves only local groups.