プロが教える店舗&オフィスのセキュリティ対策術

パソコン1に入っているアクセスファイル(accdb)に
パソコン1とパソコン2で同時に開いています。
共有している状態です。
その際、現在ファイルを開いている全てのユーザー名を取得したいのですが

http://oshiete.goo.ne.jp/qa/3589812.html
を参考に

' // 標準モジュール

Private Declare Function GetUserName Lib "ADVAPI32.dll" Alias "GetUserNameA" ( _
    ByVal lpBuffer As String, _
    ByRef nSize As Long _
) As Long
Private Const MAX_PATH As Long = 256

' // Windows のログインユーザー名を取得する
Public Function GetLoginUserName() As String
  Dim sBuffer As String
  sBuffer = String$(MAX_PATH, vbNullChar)
  If CBool(GetUserName(sBuffer, MAX_PATH) > 0) Then
    GetLoginUserName = Left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)
  End If
End Function

Sub 使い方サンプル()

  Dim sUserName As String
  
  sUserName = GetLoginUserName()
  MsgBox "USER: " & sUserName, vbInformation
  
End Sub

を実行してみたのですが、それぞれ自分のユーザー名しか取得されません。

http://billyboy.blog81.fc2.com/blog-entry-157.html


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

Function GetLoginName()
Dim strBuffer As String * 255, retValue As Long

retValue = GetUserName(strBuffer, 255)
GetLoginName = Left(strBuffer, InStr(strBuffer, vbNullChar) - 1)

End Function
Sub sample()
MsgBox GetLoginName()
End Sub

を実行しても同じです。

http://www.tsware.jp/tips/tips_013.htm
も自分のユーザー名しか取得できません。

どれも標準モジュールに貼り付けました。

現在ファイルを開いているユーザー名を取得するにはどうすればいいでしょうか?

A 回答 (1件)

参考にされたのは何れもコンピュータにログオンしている名前であって


Accessファイルを開いている人の名前ではありません。

参考にすべきはこちらです。
Access でデータベースにログオンしているユーザーを Microsoft Jet UserRoster で調べる方法
http://support.microsoft.com/kb/285822/ja

ただし、これもAccessファイルを開いたときに出来る同名で拡張子が、laccdb のファイルを
メモ帳で開いたときに表示されるのと内容は大差ありません。
ユーザー名はデフォルト設定のAdminです。
コンピュータ名が分かりますので、こちらを使っては?
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2013/06/29 07:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!