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

由于您的应用程序未处理登录 - 如果“锁定文件”是访问登录对话框,则似乎应用了某种级别的安全性。但是由于您让用户输入信息(所有这些都可以由应用程序处理),因此您不会从连接字符串中取回它......或从数据库中取回它。

报告数据库活动的真正简单方法是通过 VB 应用程序访问它。当您的应用打开连接时,使用UserPrincipal.Current.DisplayNameEnvironment.UserName做某事。

A) 将包含用户名的网络消息发送到 MessageBox 应该显示的任何位置。

B)打开连接和数据库后,应用程序可以进入新的 ActivityLog 表。如果值得通过 msgbox 报告,则可能值得记录。同样,当连接/数据库关闭时,可以记录退出类型条目。

您使用的名称可能与访问登录名称不匹配,但它肯定会识别用户。
任何要监视它的人都可以让该表打开访问以供观看。或者正如我提到的,在一个计时器上编写一个小程序,用于监视日志表的新条目。

高温高压

于 2013-09-20T13:59:44.653 回答