2013-03-25 62 views
0

我们目前正在C#中开发一个实现审计跟踪的软件,但我们无法知道哪个用户在多用户使用时执行更新/插入/删除操作。我的用户表看起来像这样:监视器登录多用户软件

create table Users(
    userID varchar(20) not null, 
    userPass varchar(20) not null, 
    userFName varchar(25) not null, 
    userLName varchar(25) not null, 
    userMName varchar(25) not null, 
    secretAnswer varchar(40), 
    userStatus int default 0, 
    primary key(userID) 
) 

如果用户登录的userStatus检查,默认为0,这意味着他/她是不是在登录时,他/她登录时,它会被更新为1,意味着他/她是该软件的当前用户。因此,要检查谁登录了,我的代码是

select userID from Users where userStatus = 1 

然后,所有的一切userStatus用户将被重置为0,一旦他退出,或者软件被关闭。但是这个逻辑仅适用于个人用户。我如何跟踪实现更新/插入/删除的用户?我正在使用C#。我在这里先向您的帮助表示感谢。

+0

Dustine不能你在当前用户当前yser使用以下 ''string userName = System.Security.Principal.WindowsIdentity.GetCurrent()。Name;'这将返回'domain \\ username',那么你所要做的就是分割返回值''\\“'if你需要一个编码的例子,我可以给你发一个 – MethodMan 2013-03-25 13:20:08

+0

我不熟悉这个过程,先生。你可以请张贴代码吗?这对我来说是一个很大的帮助。 – 2013-03-25 13:41:15

+0

我发布的代码在本地试用它,你会发现它会根据你的用户名是你的用户名是什么返回你的用户ID,你可以长期使用你的当前PC或笔记本电脑..如果你需要帮助,请发布任何其他问题。此外,如果您支持代码/应用程序,您可以在当前正在进行日志记录的项目中进行全局搜索,并存储任何必需的代码/变量,您需要将其保存到该代码/变量中。它的代码很简单 – MethodMan 2013-03-25 13:42:56

回答

0

在代码中写入日志之前,您可以跟踪当前正在调用代码的用户,您可以执行此操作并返回当前用户,以确定代码中的哪个位置你想将它

var currentUser = System.Security.Principal.WindowsIdentity.GetCurrent().Name.Split(
    new [] {"\\"}, 
     StringSplitOptions.RemoveEmptyEntries)[1]; 

这里是相同的代码,你可以看到拆分串入DomainUser

通过记录
var currentUser2 = System.Security.Principal.WindowsIdentity.GetCurrent().Name; 
var SplitUser = currentUser2.Split(new string[] { "\\" }, StringSplitOptions.RemoveEmptyEntries); 
var domain = SplitUser[0]; 
var domainUser = SplitUser[1];