3

完全に機能する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 の経験がある人はいますか?

4

4 に答える 4

3

sys(0) は、マシン名とユーザーの両方を次のように返します

lcMachineUser = sys(0)
lcMachine = LEFT( lcMachineUser, AT( "#", lcMachineUser) -1 )
lcUserName = substr( lcMachineUser, AT( "#", lcMachineUser) +1 )
于 2013-01-30T16:18:28.163 に答える
2

これにより、環境変数からユーザーの名前が取得されます。

username = GETENV("UserName")
于 2013-01-31T14:45:08.873 に答える
2

わかりました、これはかなり古いもののようです...そしてそれは本当です! ;)私は解決策を見つけましたが、これはいつかどこかで誰かを助けることができます:)

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)

これは、Foxpro コードから VBS を実行する方法です...もう 2 つのテクノロジはテクノロジではありません :)

于 2013-01-29T17:23:17.083 に答える
0

私はこの関数を使用しています:

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

スタンドアロン環境でVisualFoxProを使用すると、SYS(0)は1を返すため、SYS(0)の使用は避けます。

マシンがネットワークに接続されている場合にのみ、SYS(0)はマシン名、スペース、番号記号(#)の後に別のスペースを返し、次に現在のユーザーのID(またはVisual FoxProが存在するセキュリティコンテキスト)を返します。が走っています)。

于 2013-03-01T07:09:26.647 に答える