10

Google経由でこれを見つけました:http://www.mvps.org/access/api/api0008.htm

'******************** Code Start **************************
' This code was originally written by Dev Ashish.
' It is not to be altered or distributed,
' except as part of an application.
' You are free to use it in any application,
' provided the copyright notice is left unchanged.
'
' Code Courtesy of
' Dev Ashish
'
Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _
    "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Function fOSUserName() As String
' Returns the network login name
Dim lngLen As Long, lngX As Long
Dim strUserName As String
    strUserName = String$(254, 0)
    lngLen = 255
    lngX = apiGetUserName(strUserName, lngLen)
    If ( lngX > 0 ) Then
        fOSUserName = Left$(strUserName, lngLen - 1)
    Else
        fOSUserName = vbNullString
    End If
End Function
'******************** Code End **************************

これが最善の方法ですか?

4

6 に答える 6

12

これを行うこともできます:

Set WshNetwork = CreateObject("WScript.Network")
Print WshNetwork.UserName

また、UserDomainプロパティと他の多くのものがあります。

http://msdn.microsoft.com/en-us/library/907chf30(VS.85).aspx

于 2008-10-03T20:15:26.347 に答える
7

Environ$ を使用することもできますが、質問で指定された方法の方が優れています。ユーザー/アプリケーションは環境変数を変更できます。

于 2008-10-03T20:10:24.953 に答える
3

私は通常、次のようにVBA内から環境を使用します。ケンが可能性として言及している問題はありません。

Function UserNameWindows() As String
    UserNameWindows = VBA.Environ("USERNAME") & "@" & VBA.Environ("USERDOMAIN")
End Function
于 2008-10-03T21:31:18.020 に答える
1

それを行う別の方法-おそらくあなたが言及したAPIはユーザー名を取得するためのより良い方法です。

For Each strComputer In arrComputers
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48)
        For Each objItem in colItems
        Wscript.Echo "UserName: " & objItem.UserName & " is logged in at computer " & strComputer
Next
于 2008-10-03T20:14:43.680 に答える
1

他の投稿には多くの代替方法がありますが、質問に答えるには: はい、それが最善の方法です。ユーザー名だけが必要な場合は、COM オブジェクトまたは WMI を作成するよりも高速で、Win95 から Windows のすべてのバージョンで使用できます。

于 2008-10-04T07:02:12.173 に答える