VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2006/12/25(Mon) 19:06
投稿者kishitatsu
Eメール
URL
タイトルAPI使用によるユーザ名取得がうまくいきません

いつもお世話になります。

API:GetUserName を使用しログインユーザ名をテキストファイルに
出力するプログラムにおいてテストしても、"SYSTEM"しか取得できません。
実際にログインユーザ名が取得できたのは、直接EXEを実行した時のみでした。
API:WNetGetUserNameでも同様の結果でした。

起動はATコマンドにて直接EXEを時間指定して実行し、確認したのですが…

よろしくご教授の程、お願い致します。




コンパイル環境:VB5.0 SP3
実行環境:Windows XP SP2

【API:GetUserName利用のコード】

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


Private Type Fld1                'LOGファイル
   LOG_DateTime As String * 19
   LOG_ComputerName As String * 15
   LOG_UserName As String * 15
   LOG_Execute As String * 20
   LOG_CRLF As String * 1
End Type
Private LOG_Rec As Fld1
Private Sub Form_Load()
   Dim strBuffer As String       'ユーザ名を格納
   Dim lngGetUser As Long        '関数戻り値
   Dim strUserName As String     'ユーザ名

    FILENUM = FreeFile()
    Open "D:\TEST\LogOnUserInfo.txt" For Random As FILENUM Len = 71
    With LOG_Rec
       If 19 - Len(Format(Now, "yyyy/mm/dd hh:mm:ss")) < 0 Then
          .LOG_DateTime = Format(Now, "yyyy/mm/dd hh:mm:ss")
       Else
          .LOG_DateTime = Format(Now, "yyyy/mm/dd hh:mm:ss") & Space$(19 - Len(Format(Now, "yyyy/mm/dd hh:mm:ss")))
       End If
       If 15 - Len(Environ("COMPUTERNAME")) < 0 Then
          .LOG_ComputerName = Environ("COMPUTERNAME")
       Else
          .LOG_ComputerName = Environ("COMPUTERNAME") & Space$(15 - Len(Environ("COMPUTERNAME")))
       End If
       .LOG_CRLF = vbCrLf
    End With

   'バッファのクリア
   strBuffer = Space$(255)
   lngGetUser = GetUserName(strBuffer, 255)
   If lngGetUser = 1 Then
   'ユーザ名を格納したバッファからユーザ名文字列を抽出
      strUserName = Left(strBuffer, InStr(strBuffer, vbNullChar) - 1)
      With LOG_Rec
         If 15 - Len(strUserName) < 0 Then
            .LOG_UserName = strUserName
         Else
            .LOG_UserName = strUserName & Space$(15 - Len(strUserName))
         End If
      End With
   Else
      If 15 - Len(lngGetUser) < 0 Then
         LOG_Rec.LOG_UserName = lngGetUser
      Else
         LOG_Rec.LOG_UserName = lngGetUser & Space$(15 - Len(lngGetUser))
      End If
   End If

   Put #FILENUM, 1, LOG_Rec

   Close #FILENUM

   Unload Me

End Sub


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -