2012-01-24 3 views
3

Access 응용 프로그램에서 사용자 이름을 검색하는 방법이 적어도 2 가지 있습니다.environ ("username") vs. advapi32.dll

당신은 싸다 기능을 사용할 수 있습니다

environ("username") 

을 그리고 당신은 안전한 사용하는 것입니다 위의 방법의 advapi32.dll의

Public Declare Function GetUserName& Lib "advapi32.dll" Alias _ 
"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) 

s = String(l, Chr(32)) 
GetUserName s, l 
username = Left$(s, l - 1) 

어느 하나에 getUserName 메서드를 사용할 수 있습니까? 그리고 왜?

아마도 배경 정보가있는 응용 프로그램은 로컬 컴퓨터와 원격 데스크톱에서 모두 사용됩니다.

답변

5

그러나 어떤 사람들은 또한 이러한 경우 다음이 대안 따라 간단, API 호출을 피하기 위해 같은와 환경 변수 조작에 열려, 말했다 WNet은 범위를 벗어날 때 파괴 될 것이기 때문에`Set Nothing` 문을 건너 뛸 것입니다.
+1

+1 제외 : 사이먼으로 – JimmyPena

+0

@JP 아, 저도 몰랐습니다.) –

2

누구나 환경 변수를 설정 및 설정 해제 할 수 있으며 누락 및 기타 등등이 발생할 수 있으며 오류의 원인으로 생각하는 경우 이러한 상황을 재현하기가 어려울 수 있습니다.

나는 확실히 advapi와 함께 가고 싶습니다.

Public Function GetUser() As String 

    Dim WNet As Object 

    Set WNet = CreateObject("WScript.Network") 

    GetUser = WNet.UserName 

    Set WNet = Nothing 

End Function 
관련 문제