我想做这样一个验证过程,我做的webform在调用时验证是否注册,要调用服务器的mac地址,如何得到,我用winform可以得到,但在webform中却提示被阻止获得mac地址,请教高手,分不够可再加,只要能解决这个问题!!

解决方案 »

  1.   

    web时有个权限问题.看看是不是这个问题
      

  2.   


    这是我的代码,请大家帮帮忙!!谢谢。
    Public Function GetMacAdd() As String
            Dim mc As System.Management.ManagementClass
            Dim mo As ManagementObject
            mc = New ManagementClass("Win32_NetworkAdapterConfiguration")
            Dim moc As ManagementObjectCollection = mc.GetInstances()
            Dim m_str As String
            Dim m_char As String
            m_str = "misng"
            For Each mo In moc
                If mo.Item("IpEnabled") = True Then
                    m_str = mo.Item("MacAddress").ToString()
                    Exit For            End If
            Next
            If m_str <> "misng" Then
                Dim m_int As Integer
                For m_int = 0 To 11
                    m_char = m_char & m_str.Chars((m_int \ 2) * 3 + (m_int Mod 2))
                Next
            End If
            Return m_char
        End Function
      

  3.   

    Dim moc As ManagementObjectCollection = mc.GetInstances()
    执行到这句出错说:访问被禁止!!
    这是什么原因,怎么解决!!
      

  4.   

    很明显是权限的问题,webform中访问的默认用户是IIS的匿名用户。
    如果你真要这样做的话就要将这个用户设置相应的权限,不过。安全性方面就不行了。
      

  5.   

    如果你一定要这样做的话也可以这样,在IIS中找到这个文件,点击属性,在文件安全性中的身份验证和访问控制中设置访问的相应用户和密码。
      

  6.   

    private class GetOfMACAddr
    {
    public GetOfMACAddr(){} /// <summary>得到网卡 MAC 地址</summary>
    /// <returns>返回地址数组,字符类型</returns>
    /// 例:
    /// ArrayList myAddr = ArLi.CommonPrj.GetOfMACAddr.GetIt();
    /// for (int i=0; i<myAddr.Count; i++) MessageBox.Show(myAddr[i].ToString());
    /// 
    public static ArrayList GetIt() 

    ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
    ManagementObjectCollection moc = mc.GetInstances(); 
    ArrayList strArr = new ArrayList();

    //网卡数
    foreach(ManagementObject mo in moc) 
    {
    if((bool)mo["IPEnabled"]) 
    {
    strArr.Add(mo["MacAddress"].ToString().Replace(":",""));
    }
    mo.Dispose();
    } return strArr; 
    }
    }
      

  7.   

    路过。
     不是很清楚。
    在 WEB.CONFIG 里加多一个<identity impersonate="true"/>试试。
      

  8.   

    順便問一下能否取得客戶機的Mac地址?
      

  9.   

    应该是权限问题,,如果只是取服务器的MAC,干吗不用WINFORM来完成呢?
      

  10.   

    做一个函数库来取,我做过,不过是用的delphi
      

  11.   

    首先,服务器必须完全受你控制,不能使托管的空间。我建议你做一个Windows Service,这个Windows Service专门负责返回服务器的MAC,然后设置为自动运行,给它足够权限。接下来需要的就是在ASP.NET中使用一定的方法来和这个Windows Service沟通,调用它的接口以获取MAC。
      

  12.   

    http://cn.f1.pg.briefcase.yahoo.com/bc/wuwei0923/lst?.dir=/webEngine&.order=&.view=l&.src=bc&.done=http%3a//cn.f1.pg.briefcase.yahoo.com/.net写的。我试过,普通 aspnet 默认身份就能检测机器数百项硬件信息,包括 cpu型号、频率、厂商、序列号;网卡厂商、型号、MAC地址; IDE设备、SCSI设备;CDROM厂商型号;主板的厂商、型号 等等。
      

  13.   

    而且我也试过在租用的空间仅仅上传一个简单的aspx就行。没那么复杂。
      

  14.   

    http://wuweihome.vicp.net/machine/webapplication8.rar
      

  15.   

    我的程序在几台机器上运行都没问题,但在要用的服务器上却不行,是台IBM服务器,显示的是“拒绝访问”,不知道是什么问题。
      

  16.   

    我的程序与上面列出的程序一样:
    ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
    ManagementObjectCollection moc = mc.GetInstances(); 
    ArrayList strArr = new ArrayList();//网卡数
    foreach(ManagementObject mo in moc) 
    {
    if((bool)mo["IPEnabled"]) 
    {
    strArr.Add(mo["MacAddress"].ToString().Replace(":",""));
    }
    mo.Dispose();
    }
    在第一条语句上就报拒绝访问,但在其它几台机器上却可以运行。请高手指点。
      

  17.   

    因为你其他机器要进行vs.net调试,所以aspnet身份权限很高,隶属于较高身份的用户组。如果你自己掌控一切,将你ibm服务器上aspnet进程的身份(具体是哪个用户,要自己查一下taskmgr.exe,或者干脆到machine.config里边去设置一个新的身份)提高。如果用户会有意见,就应该避免使用需要特殊权限的方法,换其他方法。
      

  18.   

    http://cn.f1.pg.briefcase.yahoo.com/bc/wuwei0923/lst?.dir=/webEngine&.order=&.view=l&.src=bc&.done=http%3a//cn.f1.pg.briefcase.yahoo.com/