Vbscript 如何获取完整的用户名?

Vbscript 如何获取完整的用户名?,vbscript,visual-foxpro,foxpro,Vbscript,Visual Foxpro,Foxpro,我在VBS中有以下代码,它们工作得非常好。它查询AD以获取用户全名: Set objSysInfo = CreateObject("ADSystemInfo") strUser = objSysInfo.UserName Set objUser = GetObject("LDAP://" & strUser) strFullName = objUser.Get("displayName") MsgBox strFullName 我想做同样的薄,但在foxpro7。有人有过VFP7或VF

我在VBS中有以下代码,它们工作得非常好。它查询AD以获取用户全名:

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

我想做同样的薄,但在foxpro7。有人有过VFP7或VFP9的使用经验吗?

好吧,这东西似乎很旧……这是真的!;) 我找到了一个解决方案,但是,这可以帮助某人,某地,某天:)

这就是从Foxpro代码执行VBS的方式……两种不再是技术的技术:)

sys(0)同时返回机器名和用户,类似于

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

这将从环境变量中获取用户名

username = GETENV("UserName")

我正在使用此函数:

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),因为: 在独立环境中使用Visual FoxPro时,SYS(0)返回1

当机器连接到网络时,SYS(0)返回机器名、空格、数字符号(#),后跟另一个空格,然后返回当前用户的id(或运行Visual FoxPro的安全上下文)

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