C# 监视多用户软件中的日志

C# 监视多用户软件中的日志,c#,sql,database,C#,Sql,Database,我们目前正在用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)

我们目前正在用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

然后,一旦用户注销或软件关闭,所有用户的所有用户状态都将重置为0。但这种逻辑只适用于单个用户。如何跟踪实现更新/插入/删除的用户?我用的是C。提前感谢您的帮助。

在您的代码中添加Dustine在写入日志之前,您可以根据当前用户的登录情况跟踪正在调用代码的当前用户。您可以这样做,它将返回当前用户,您需要确定要将其放置在代码中的位置

var currentUser = System.Security.Principal.WindowsIdentity.GetCurrent().Name.Split(
    new [] {"\\"}, 
        StringSplitOptions.RemoveEmptyEntries)[1];
下面是将字符串拆分为
用户

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

Dustine无法通过使用以下
字符串userName=System.Security.Principal.WindowsIdentity.GetCurrent().Name记录当前yser来获取当前用户
这将返回
域\\用户名
,然后您只需在
“\\”
上的返回值上拆分即可。如果您需要一个编码示例,我可以为您发布一个。先生,我不熟悉这个过程。你能帮我发个密码吗?这对我来说将是一个很大的帮助。我发布了代码,请在您的本地计算机上试用,您将看到它将根据您的用户名返回您的用户ID,您的用户长时间使用您当前的pc或笔记本电脑。。如果您需要帮助,请发布任何其他问题。此外,如果您支持代码/应用程序,您可以在当前正在进行日志记录的项目中进行全局搜索,并插入任何必要的代码/变量以延长此时间。这非常简单。代码返回我正在使用的机器的名称。如果我登录了这台机器的另一个帐户,它仍然会返回我正在使用的机器。我可以从数据库中的用户帐户中获取它吗?无论如何,感谢您提供的代码:)这可能会有所帮助。我将向我的答案中添加代码,该代码将拆分为字符串[],您可以通过数组中的第二个元素访问用户。。如果您以其他用户身份登录,它仍然会显示用户名。我假设您知道谁的帐户属于哪个用户,只要您没有使用服务帐户登录。。然后你必须重新思考你目前的流程