0

私はVBプログラムを手に入れました。Accessデータベースを利用してプロジェクト情報を管理することです。このプログラムは、さまざまな PC のユーザーが使用できます。PC の現在のユーザー名が

UserPrincipal.Current.DisplayName

プログラムの起動時にこのユーザー名を表示したいだけです。たとえば、「XXX がデータベースにアクセスしています」というメッセージ ボックスを表示するだけです。

私が使用しているデータベース接続は OleDbConnection で、データベースを開くソースは

Private Const DB_PROVIDER As String = "Provider=Microsoft.ACE.OLEDB.12.0"
Private Const DB_SOURCE As String = "Data Source=\\meldc2\X-Drive\Luxi\NSW_OLGR.accdb"
Private Const DB_MODE As String = "Mode=Share Exclusive"
Private Const DB_CONNECTION_STRING As String = DB_PROVIDER + ";" + DB_SOURCE + ";" + DB_MODE

mConnection = New OleDbConnection
mConnection.ConnectionString = DB_CONNECTION_STRING

mConnection.Open()

だから私の質問は、「上記と同じユーザー名を取得するために、この接続にAPIはありますか?」です。データベースが使用中の場合、Open() API が例外をスローする可能性があることがわかりました。例外からユーザー名に関する情報を取得できますか?

ご協力いただきありがとうございます!

4

1 に答える 1

0

アプリはログインを処理していないため、「ロック ファイル」がアクセス ログイン ダイアログの場合、何らかのレベルのセキュリティが適用されているように見えます。しかし、USER が情報を入力しているため (代わりにアプリで処理できるすべて)、接続文字列または DB から情報を取得することはできません。

DB アクティビティを報告する本当に簡単な方法は、VB アプリからアクセスすることです。アプリが接続を開いたら、UserPrincipal.Current.DisplayNameorEnvironment.UserNameを使用して何かを行います。

A) MessageBox が表示されるはずの場所に、ユーザー名を含むネットワーク メッセージを送信します。

B) 接続と DB を開いた後、アプリは新しい ActivityLog テーブルにエントリを作成できます。msgbox 経由で報告する価値がある場合は、記録を残す価値があるかもしれません。同様に、接続/DB が閉じられると、Exit タイプのエントリがログに記録される可能性があります。

使用する名前は Access Login 名と一致しない場合がありますが、確実にユーザーを識別します。
誰がそれを監視しようとしても、Access を開いたままそのテーブルを開いて監視することができます。または、前述したように、ログ テーブルへの新しいエントリを監視するタイマーに小さなアプレットを作成します。

HTH

于 2013-09-20T13:59:44.653 に答える