当前位置: 首页 > 编程语言 > C#

如何从Windows操作系统获取当前用户名和密码,分享

时间:2023-04-11 12:09:47 C#

如何从Windows操作系统获取当前用户名和密码。故事:我有原装英特尔主板随附的主板CD。当我安装驱动程序时,它要求输入管理员帐户的用户名和密码。安装每个驱动程序后,系统将重新启动而不要求输入用户名和密码。我的想法是Windows应该有一种方法来验证和输入用户名和密码你能告诉我如何在C#中执行此操作吗,谢谢。我认为这篇文章可能对您有所帮助。如果您在理解代码时遇到任何问题,请告诉我。编辑1:我对你的问题感到困惑。我的想法:根据上面的Windows,请提供一些vay来验证并输入用户名和密码是否要验证输入的用户名和密码?啊,抱歉耽搁了。这是转换后的c#代码添加以下名称空间:usingSystem.Security.Principal;使用System.Security.Permissions;使用System.Runtime.InteropServices;然后是主要代码:namespaceWindowsAccount{publicpartialclassForm1:Form{[DllImport("advapi32.dll",SetLastError=true)]publicstaticexternboolLogonUser(stringlpszUsername,stringlpszDomain,stringlpszPassword,intdwLogonType,intdwLogonProvider,输出IntPtrphToken);[DllImport("kernel32.dll")]publicstaticexternintFormatMessage(intdwFlags,refIntPtrlpSource,intdwMessageId,intdwLanguageId,refStringlpBuffer,intnSize,refIntPtrArguments);[DllImport("kernel32.dll",SetLastError=true)][返回:MarshalAs(UnmanagedType.Bool)]staticexternboolCloseHandle(IntPtrhObject);publicstaticstringGetErrorMessage(interrorCode){intFORMAT_MESSAGE_ALLOCATE_BUFFER=0x100;intFORMAT_MESSAGE_IGNORE_INSERTS=0x200;intFORMAT_MESSAGE_FROM_SYSTEM=0x1000;intmsgSize=255;字符串lpMsgBuf=空;intdwFlags=FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS;IntPtrlpSource=IntPtr.Zero;IntPtrlpArguments=IntPtr.Zero;intreturnVal=FormatMessage(dwFlags,reflpSource,errorCode,0,reflpMsgBuf,msgSize,reflpArguments);if(returnVal==0){thrownewException("无法为错误代码格式化消息"+errorCode.ToString()+"。");}返回lpMsgBuf;}publicForm1(){InitializeComponent();}privatevoidbtnLogin_Click(objectsender,EventArgse){IntPtrtokenHandle=newIntPtr(0);尝试{字符串用户名=null;字符串机器名=空;字符串密码=空;//MachineName属性获取您计算机的名称。MachineName=System.Environment.MachineName;UserName=txtUser.Text;Pwd=txtPass.Text;constintLOGON32_PROVIDER_DEFAULT=0;constintLOGON32_LOGON_INTERACTIVE=2;tokenHandle=IntPtr.Zero;//调用LogonUser函数获取访问令牌的句柄。boolreturnValue=LogonUser(UserName,MachineName,Pwd,LOGON32_LOGON_INTERACTIVE,LOGON32_PROVIDER_DEFAULT,outtokenHandle);if(returnValue==false){//此函数返回上一个非托管函数返回的错误代码。intret=Marshal.GetLastWin32Error();字符串errmsg=GetErrorMessage(ret);MessageBox.Show(errmsg);}else{//为由tokenHandle令牌表示的Windows用户帐户创建WindowsIdentity对象。WindowsIdentitynewId=newWindowsIdentity(tokenHandle);WindowsPrincipaluserperm=newWindowsPrincipal(newId);//验证Windows用户是否具有管理凭据。if(userperm.IsInRole(WindowsBuiltInRole.Administrator)){MessageBox.Show("已授予访问权限。用户是管理员");}else{MessageBox.Show("已授予访问权限。用户不是管理员");}}CloseHandle(tokenHandle);}catch(Exceptionex){MessageBox.Show("异常发生。"+ex.Message);}}}}如果您遇到任何问题,请告诉我您可以使用由多个注册表项控制的自动管理员登录功能。请参阅http://support.microsoft.com/kb/315231您可以通过转到命令提示符并键入以下内容来找到您的用户名:C:>setUSERNAME它将打印类似USERNAME=Administrator的内容,这是您的登录用户名。我很确定你的密码是空白/空白,否则它会提示你。以上就是C#学习教程:如何从Windows操作系统获取当前用户名和密码。如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢