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

用用户名和密码模拟?分享

时间:2023-04-11 00:50:48 C#

冒充用户名和密码?WindowsIdentityidentity=newWindowsIdentity(accessToken);WindowsImpersonationContextcontext=identity.Impersonate();...上下文。撤消();我在哪里声明管理员用户名和密码?accessToken参数对我帮助不大...我是否必须为其导入DLL?您需要获取用户的令牌。使用advapi32.dll中的p/invokeLogonUser:[DllImport("advapi32.dll",SetLastError=true)]publicstaticexternboolLogonUser(stringlpszUsername,stringlpszDomain,stringlpszPassword,intdwLogonType,intdwLogonProvider,outIntPtrphToken);示例:IntPtruserToken=IntPtr.Zero;boolsuccess=External.LogonUser("john.doe","domain.com","MyPassword",(int)AdvApi32Utility.LogonType.LOGON32_LOGON_INTERACTIVE,//2(int)AdvApi32Utility.LogonProvider.LOGON32_PROVIDER_DEFAULT,//0outuserToken);if(!success){thrownewSecurityException("登录用户失败");}using(WindowsIdentity.Impersonate(userToken)){//使用john.doe的凭据执行操作}这正是您必须使用的accessoken。要获得它,您需要调用LogonUser方法:糟糕,我没有意识到我这里只有VB.net代码。想像一下它在C#;)在这里c#外部方法声明:PrivateDeclareAutoFunctionLogonUserLib"advapi32.dll"(ByVallpszUsernameAs[String],_ByVallpszDomainAs[String],ByVallpszPasswordAs[String],_ByValdwLogonTypeAsInteger,ByValdwLogonProviderAsInteger,_ByRefphTokenAsIntPtr)AsBoolean和执行:_Token=NewIntPtr(0)ConstLOGON32_PROVIDER_DEFAULTAsInteger=0'此参数导致LogonUser创建主令牌。ConstLOGON32_LOGON_INTERACTIVEAsInteger=2ConstLOGON32_LOGON_NEWCREDENTIALSAsInteger=9_Token=IntPtr.Zero'调用LogonUser以获得访问令牌的句柄。DimreturnValueAsBoolean=LogonUser(_User,_Domain,_Password,LOGON32_LOGON_NEWCREDENTIALS,LOGON32_PROVIDER_DEFAULT,_Token)如果False=returnValueThenDimretAsInteger=Marshal.GetLastWin32Error()Console.WriteLine("LogonUser失败,错误代码:{0}",ret)抛出NewSystem.ComponentModel.Win32Exception(ret)EndIf_Identity=NewWindowsIdentity(_Token)_Context=_Identity.Impersonate()您需要调用LogonUser()API,它接受用户名、域和密码并返回令牌。以上就是C#学习教程:Simulationwithusernameandpassword?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢