如何使用.NET从多用户环境中的Windows Service获取当前Windows用户名

Syed Waqas |

我有一个Windows服务,该服务始终为所有登录的用户运行WPF应用程序,并且运行良好,现在在WPF应用程序中,我无法获得当前的用户名,即Environment.UserName;返回“ SYSTEM”,这是可以理解的。所以我想是找到可以由Process.GetCurrentProcess()。SessionId检索的当前进程的会话ID,然后获取登录到该计算机并循环遍历的所有用户的列表,以找到与进程会话匹配的会话ID id和后来的用户名。

但我不知道如何获取所有已登录用户的列表,或者如果有人可以帮助我,我将不胜感激。

Syed Waqas |

我通过在WPF应用程序中执行powershell命令“ quser”来解决该问题,该命令返回所有已登录的用户,然后迭代查找其中应用程序正在使用用户会话ID运行的会话ID,然后检索其名称。以下是通过传递用户名ID来获取用户名的函数

 private string GetUserName(int SessionId)
        {
            try
            {
                Runspace runspace = RunspaceFactory.CreateRunspace();
                runspace.Open();

                Pipeline pipeline = runspace.CreatePipeline();
                pipeline.Commands.AddScript("Quser");
                pipeline.Commands.Add("Out-String");

                Collection<PSObject> results = pipeline.Invoke();

                runspace.Close();

                StringBuilder stringBuilder = new StringBuilder();
                foreach (PSObject obj in results)
                {
                    stringBuilder.AppendLine(obj.ToString());
                }

                foreach (string User in stringBuilder.ToString().Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries).Skip(1))
                {
                    string[] UserAttributes = User.Split(new string[]{" "},StringSplitOptions.RemoveEmptyEntries);
                    if (int.Parse(UserAttributes[2].Trim()) == SessionId)
                    {
                        return UserAttributes[0].Replace(">", string.Empty).Trim();
                    }
                }

                return stringBuilder.ToString();
            }
            catch (Exception ex)
            {
            }

            return string.Empty;
        }

该函数可以通过以下方式调用

string CurrentUser = GetUserName(Process.GetCurrentProcess().SessionId);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获取当前Windows登录用户的用户名?

来自分类Dev

如何获取当前Windows用户名并禁用凭据提示?

来自分类Dev

如何获取当前登录用户authservice的用户名

来自分类Dev

如何使用Java获取Windows服务用户名?

来自分类Dev

在Windows下获取当前用户名

来自分类Dev

如何在Angular 8中获取Windows用户名

来自分类Dev

如何通过单点登录在asp.net中获取Windows登录用户名

来自分类Dev

如何通过单点登录在asp.net中获取Windows登录用户名

来自分类Dev

如何在 ASP.NET 中获取 Windows 用户名?

来自分类Dev

如何使用PostgreSQL中的选择获取当前数据库和用户名

来自分类Dev

如何使用jsf在Spring Security中获取当前登录的用户名?

来自分类Dev

在ASP.NET Core 3.0中如何获取当前经过身份验证的用户名?

来自分类Dev

如何在Active Directory中获取用户名并在Windows Services中使用它?

来自分类Dev

如何在 UWP App 中获取当前登录用户的用户名或 ID

来自分类Dev

如何在PostgreSQL中使用`select`获取当前数据库和用户名?

来自分类Dev

如何使用队列为 Azure Functions 设置多用户环境?

来自分类Dev

使用PDO显示当前用户名

来自分类Dev

Windows使用哪种语言环境检查用户名?

来自分类Dev

从AWS开发工具包,如何获取当前登录的用户名(或IAM用户)?

来自分类Dev

Grails:如何获取当前登录用户的用户名,以及需要进行哪些导入?

来自分类Dev

如何获得Windows用户名?

来自分类Dev

无法在ASP.NET中使用“ User.Identity.Name”获取Windows用户名

来自分类Dev

无法在ASP.NET中使用“ User.Identity.Name”获取Windows用户名

来自分类Dev

如何在QWeb Report Odo中获取当前的登录用户名

来自分类Dev

如何在Blazor WebAssembly的Razor页面中获取当前用户名?

来自分类Dev

获取当前用户名和用户名

来自分类Dev

如何获取与进程关联的Windows用户名(在Framework 4.0中)

来自分类Dev

如何使用“查询用户”获取活动用户名

来自分类Dev

如何使用grep从文件中获取Skype用户名?

Related 相关文章

  1. 1

    如何获取当前Windows登录用户的用户名?

  2. 2

    如何获取当前Windows用户名并禁用凭据提示?

  3. 3

    如何获取当前登录用户authservice的用户名

  4. 4

    如何使用Java获取Windows服务用户名?

  5. 5

    在Windows下获取当前用户名

  6. 6

    如何在Angular 8中获取Windows用户名

  7. 7

    如何通过单点登录在asp.net中获取Windows登录用户名

  8. 8

    如何通过单点登录在asp.net中获取Windows登录用户名

  9. 9

    如何在 ASP.NET 中获取 Windows 用户名?

  10. 10

    如何使用PostgreSQL中的选择获取当前数据库和用户名

  11. 11

    如何使用jsf在Spring Security中获取当前登录的用户名?

  12. 12

    在ASP.NET Core 3.0中如何获取当前经过身份验证的用户名?

  13. 13

    如何在Active Directory中获取用户名并在Windows Services中使用它?

  14. 14

    如何在 UWP App 中获取当前登录用户的用户名或 ID

  15. 15

    如何在PostgreSQL中使用`select`获取当前数据库和用户名?

  16. 16

    如何使用队列为 Azure Functions 设置多用户环境?

  17. 17

    使用PDO显示当前用户名

  18. 18

    Windows使用哪种语言环境检查用户名?

  19. 19

    从AWS开发工具包,如何获取当前登录的用户名(或IAM用户)?

  20. 20

    Grails:如何获取当前登录用户的用户名,以及需要进行哪些导入?

  21. 21

    如何获得Windows用户名?

  22. 22

    无法在ASP.NET中使用“ User.Identity.Name”获取Windows用户名

  23. 23

    无法在ASP.NET中使用“ User.Identity.Name”获取Windows用户名

  24. 24

    如何在QWeb Report Odo中获取当前的登录用户名

  25. 25

    如何在Blazor WebAssembly的Razor页面中获取当前用户名?

  26. 26

    获取当前用户名和用户名

  27. 27

    如何获取与进程关联的Windows用户名(在Framework 4.0中)

  28. 28

    如何使用“查询用户”获取活动用户名

  29. 29

    如何使用grep从文件中获取Skype用户名?

热门标签

归档