一般来说IIS的验证方式有好几种,比较常见的就是匿名验证,集成Windows验证等等。 但是集成Windows验证每次都会谈个对话框出来,很麻烦,特别是在使用代理的情况下。

于是想能不能用一种Form的方式实现Windows验证呢? 当然啦,想想而已,本来对WEB开发就不算熟, Windows方面的就更差了。

在网上搜索到了一种方式,利用 advapi32.dll的LogonUser方法是可以验证你输入的用户名密码是不是Windows的有效用户的。

代码如下 :

'include permissions namespace for security attributes

'include principal namespace for windowsidentity class

'include interopservices namespace for dllImports.

Imports System.Security.Principal

Imports System.Security.Permissions

Imports System.Runtime.InteropServices

'

Public Class LogInUser

_

Private Shared Function LogonUser(ByVal lpszUsername As String, ByVal lpszDomain As String, ByVal

lpszPassword As String, _    ByVal dwLogonType As Integer, ByVal dwLogonProvider As Integer, ByRef phToken  As Integer) As Boolean

End Function

_

Private Shared Function GetLastError() As Integer

End Function

Public Shared Function LogInThisUser(ByVal username As String, ByVal domainname As String, _

ByVal password As String) As String

Try

'The Windows NT user token.

Dim token1 As Integer

'Get the user token for the specified user, machine, and password using the unmanaged LogonUser method.

'The parameters for LogonUser are the user name, computer name, password,

'Logon type (LOGON32_LOGON_NETWORK_CLEARTEXT), Logon provider (LOGON32_PROVIDER_DEFAULT),

'and user token.

Dim loggedOn As Boolean = LogonUser(username, domainname, password, 3, 0, token1)

'impersonate user

Dim token2 As IntPtr = New IntPtr(token1)

Dim mWIC As WindowsImpersonationContext = _

New WindowsIdentity(token2).Impersonate

Catch e As Exception

'error occurred.. error number unknown.

Return "Err. occurred : " & e.Message

End Try

Dim winUser As WindowsIdentity

Return winUser.GetCurrent.Name

End Function

End Class

不过网上的VB代码,我习惯用的是C#,于是一行一行的转换。结果后来执行的时候就出错了: 提示 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

开始以为是因为要获取系统用户信息,所以需要的权限比较高或者是会读去受保护的系统信息。 继续搜索这个错误,发现是因为使用了非托管代码,而且我转换LogonUser函数中的最后一个变量  ByRef phToken  As Integer时,转换成了INT,实际上应该是ref InPtr类型,因为引用非托管代码函数参数错误,所以报这个错误。

至于托管代码和非托管代码更详细的差别还得以后慢慢研究了。。

c#尝试写入或者读取受保护的内存_C# 尝试读取或写入受保护的内存。这通常指示其他内存已损坏 | 学步园...相关推荐

  1. c#尝试写入或者读取受保护的内存_C# 尝试读取或写入受保护的内存,这通常指示其他内存已损坏。错误类型为:System.AccessViolationException。...

    报错 dll文件应该是C++写的.封装了之后供我的C#程序调用,结果就提示了错误:尝试读取或写入受保护的内存.这通常指示其他内存已损坏.错误类型为:System.AccessViolationExce ...

  2. C#尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

    用VS2012调试时发现在调用数据集时提示"尝试读取或写入受保护的内存.这通常指示其他内存已损坏." 用管理员身份运行CMD,输入netsh winsock reset并回车 转载 ...

  3. C# 尝试读取或写入受保护的内存,这通常指示其他内存已损坏。错误类型为:System.AccessViolationException。...

    C# 尝试读取或写入受保护的内存,这通常指示其他内存已损坏.解决方案 报错 dll文件应该是C++写的.封装了之后供我的C#程序调用,结果就提示了错误:尝试读取或写入受保护的内存.这通常指示其他内存已 ...

  4. asp.net报错“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”的解决办法...

    "System.AccessViolationException"类型的未经处理的异常在 System.Data.dll 中发生 其他信息: 尝试读取或写入受保护的内存.这通常指示 ...

  5. halcon图片上传到mysql_C# 10个线程并发执行Halcon图像算法 报“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”...

    如题,这个问题本人已经纠结了快三个工作日了.本人不同WinFrom程序一起动就会开启10个线程,并发对10张图片进行算法处理,问题是只要程序一起动就会报"尝试读取或写入受保护的内存.这通常指 ...

  6. 新中新二代身份证dll调用,报尝试读取或写入受保护的内存,这通常指示其他内存已损坏 这个错 ...

    新中新二代身份证dll调用问题:调用这个dll时, 到这个方法: Syn_ReadMsg(nPort, 0, ref CardMsg),就报尝试读取或写入受保护的内存.这通常指示其他内存已损坏 这个错 ...

  7. System.AccessViolationException:“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”

    System.AccessViolationException:"尝试读取或写入受保护的内存.这通常指示其他内存已损坏." 错误源代码: void CTPMDAdapter::Re ...

  8. System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。...

    昨天写的RC4的加解密程序,当C#调用C的dll时就会出现这个提示,尝试怎么修改都不行.Debug跟踪显示,应该返回string类型的函数返回值为空.也不知道怎么调试dll,dll里下的断点始终提示无 ...

  9. xp补丁导致 vs2008 出现 尝试读取或写入受保护的内存。这通常指示其他内存已损坏 的解决办法

    此补丁在360安全卫士发布于 2012年8月13日 名叫 KB2731847 Windows内核驱动权限提升漏洞 安装后导致 vs2008 的项目 出现 尝试读取或写入受保护的内存.这通常指示其他内存 ...

  10. 程序出现异常尝试读取或写入受保护的内存这通常指示其他内存已损坏

    "尝试读取或写入受保护的内存这通常指示其他内存已损坏". System.AccessViolationException: Attempted to read or write p ...

最新文章

  1. 11CSS的三大特性
  2. Python3.6.4 安装
  3. APDPlat的系统启动和关闭流程剖析
  4. boost::xtime相关的测试程序
  5. 【Tiny4412】烧写Uboot到EMMC
  6. Aspose.Words 自定义文档模版生成操作类
  7. 数字图像的大小、所需比特数(二维)
  8. dan.php,shenlingdan.php
  9. 嵌套访问_利用Idea重构功能及Java8语法特性——优化深层嵌套代码
  10. Python使用matplotlib可视化模拟烧烤摊每月营业额折线图
  11. lisp 角平分线_清华同方mds软件下载安装 清华英泰cad mds2002
  12. 搜索百度网盘的小姐姐,云网盘之家
  13. 修改游戏存档之植物大战僵尸
  14. 共阴极数码管,学号显示实验
  15. c++内存分区、创建变量开辟内存
  16. 如何开发app软件?程序员揭秘你还没听过的1种方法
  17. 埃睿迪展台热度持续 为绿色城市建设进言献策
  18. java-php-python-ssm“花花世界”网站计算机毕业设计
  19. 中国软件开发工程师之痛 by 李云~
  20. Font ‘default‘ does not have a glyph for ‘-‘ [U+2212], substituting with a d简单解决问题

热门文章

  1. FXMarket奇米股指:清明节期间产品休市和出入金安排通知
  2. Java Seckill Project
  3. 设计新手最常见的4个问题
  4. 利用 DIAMOND、MCScanX、TBtools 分析物种基因组间的共线性区段与基因复制事件
  5. 应用层故事难讲 公链集体押注DeFi背后 是黔驴技穷的无奈之举?
  6. 全国医疗卫生信息化公司网址大全
  7. DevOps平台的“精益创业”之路
  8. 【学习摘抄】渗透性测试方法和步骤
  9. 2022年强网杯rcefile wp
  10. 没想到 Python 中竟然还藏着这些稀奇古怪的东西...