C#.NET使用Windows服务获取计算机的用户名我在获取计算机登录计算机时遇到问题使用Windows服务。同时使用System.Environment.UserName或WindowsIdentity.GetCurrent()时。UserName我得到NTAUTHORITYSYSTEM但是当这个应用程序被推送时我需要能够映射到登录系统的人的UserID。要使用的操作系统将是WindowsXP。任何帮助将不胜感激。仅对于XP,此建议应该有效:GetWindowStationfornon-interactiveusersperprocess,user,orsession?但是,当您将应用程序升级到Vista、Windows7或更高版本时,这种方法将会中断,因为在这些系统中,服务在与交互式登录不同的会话中运行。您需要调用终端服务API来获取已登录用户的列表,并选择“交互式”用户。试试这个:varconnectionOptions=newConnectionOptions();varscope=newSystem.Management.ManagementScope("\\localhost",connectionOptions);varquery=newSystem.Management.ObjectQuery("select*fromWin32_ComputerSystem");varsearcher=newManagementObjectSearcher(scope,query);foreach(varrowinsearcher.Get()){Console.WriteLine(row["UserName"].ToString().ToLower());Windows服务始终位于服务“属性/登录选项卡中,以在提供的凭据下运行。这与当前在其会话中登录Windows的人员/人员的凭据无关。NTAUTHORITYSYSTEM的值是正确的,因为您的服务在“本地系统帐户”凭据下运行。您不能在“当前登录”用户的帐户下运行Windows服务-这不是Windows服务的用途。以上就是C#学习教程:C#.NET使用Windows服务获取电脑用户名分享全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收集,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
