C# 如何检测哪个Windows帐户正在运行.net应用程序?
我正在编写一个sharepoint web部件。它将日志写入文件(使用StreamWriter)。但是,日志仅为帐户为托管web部件的服务器上的管理员的用户编写。我想检测哪个帐户(可能不是通过使用SPUser)正在执行web部件的代码,以便为权限较低的用户生成日志。可能吗C# 如何检测哪个Windows帐户正在运行.net应用程序?,c#,.net,sharepoint,C#,.net,Sharepoint,我正在编写一个sharepoint web部件。它将日志写入文件(使用StreamWriter)。但是,日志仅为帐户为托管web部件的服务器上的管理员的用户编写。我想检测哪个帐户(可能不是通过使用SPUser)正在执行web部件的代码,以便为权限较低的用户生成日志。可能吗 感谢该框架提供了一个表示经过身份验证的Windows用户的类,以及一个封装用户角色和用户角色成员身份信息的类。此代码片段将为您提供用户所属的组 var id = System.Security.Principal.Window
感谢该框架提供了一个表示经过身份验证的Windows用户的类,以及一个封装用户角色和用户角色成员身份信息的类。此代码片段将为您提供用户所属的组
var id = System.Security.Principal.WindowsIdentity.GetCurrent();
IdentityReferenceCollection irc = id.Groups;
foreach (IdentityReference ir in irc)
Console.WriteLine(ir.Value);
有一些方法可以达到相同的结果:
Request.LogonUserIdentity
HttpContext.Request.LogonUserIdentity
Page.User.Identity
System.Security.Principal.WindowsPrincipal
的对象,它为您提供了所需的一切。例如,Name属性是用户名。Groups属性是与用户所属的组相对应的SecurityIdentifier列表。可以使用NTAccount类将SecurityIdentifier转换为名称。(例如,请参见)