как получить полное имя пользователя?

У меня есть следующий код в VBS, который отлично работает. он запрашивает AD, чтобы получить полное имя пользователя:

Set objSysInfo = CreateObject("ADSystemInfo")
strUser = objSysInfo.UserName
Set objUser = GetObject("LDAP://" & strUser)
strFullName = objUser.Get("displayName")
MsgBox strFullName

Я хотел бы сделать то же самое, но в Foxpro 7. У кого-нибудь есть опыт работы с VFP 7 или 9?


person user1327073    schedule 29.01.2013    source источник


Ответы (4)


sys(0) возвращает как имя машины, так и имя пользователя, что-то вроде

lcMachineUser = sys(0)
lcMachine = LEFT( lcMachineUser, AT( "#", lcMachineUser) -1 )
lcUserName = substr( lcMachineUser, AT( "#", lcMachineUser) +1 )
person DRapp    schedule 30.01.2013

Хорошо, кажется, что это довольно старый материал... и это правда! ;) Однако я нашел решение, это может помочь кому-то, где-нибудь, когда-нибудь :)

loScript = Createobject("MSScriptcontrol.scriptcontrol.1")
loScript.Language = "VBScript"

TESTVBS = [Set objSysInfo = CreateObject("ADSystemInfo")] + chr(13)+chr(10)+;
          [strUser = objSysInfo.UserName] + chr(13)+chr(10)+;
          [Set objUser = GetObject("LDAP://" & strUser)] + chr(13)+chr(10)+;
          [strFullName = objUser.Get("displayName")] + chr(13)+chr(10)
          *[MsgBox strFullName]

loScript.executestatement(TESTVBS)

вот как вы запускаете VBS из кода Foxpro ... две технологии, которые больше не являются технологиями :)

person user1327073    schedule 29.01.2013

Это позволит получить имя пользователя из переменных окружения.

username = GETENV("UserName")
person Jerry    schedule 31.01.2013

Я использую эту функцию:

FUNCTION Get_User()
  LOCAL cUsrBuf, nUsrLen, cUserName
  cUsrBuf = SPACE(20)
  nUsrLen = 20
  DECLARE GetUserName IN advapi32 AS GetUserName STRING @cusrbuf, LONG @nusrlen
  =GetUserName(@cusrbuf, @nusrlen)
  cUserName = LEFT(ALLTRIM(cusrbuf), LEN(ALLTRIM(cusrbuf)) - 1)
 RETURN cUserName
ENDFUNC

Я бы не стал использовать SYS(0), потому что: SYS(0) возвращает 1 при использовании Visual FoxPro в автономной среде.

Только когда машина подключена к сети, SYS(0) возвращает имя машины, пробел, знак номера (#), за которым следует еще один пробел, а затем идентификатор текущего пользователя (или контекст безопасности, в котором работает Visual FoxPro).

person gavroche    schedule 01.03.2013