C# Travel
kingboy
博客园
首页
新随笔
新文章
联系
管理
订阅
随笔- 16 文章- 6 评论- 4
足迹—— 获取客户端MAC地址
为了CRM系统的安全性,今天领导要求员工登录时候都要验证他们电脑的信息,匹配之后才允许登录。我左思右想还是验证网卡的MAC吧。首先在Commond层加个获取网卡信息的类
GetNetCardMAC
using
System;
using
System.Collections.Generic;
using
System.Text;
using
System.Management;
namespace
JL.CRM.Common
{
public
class
GetNetCardMAC
{
private
ManagementClass mc;
private
ManagementObjectCollection moc;
public
GetNetCardMAC()
{ }
/**/
///
<summary>
///
取得设备网卡的MAC地址
///
</summary>
public
string
GetNetCardMacAddress()
{
mc
=
new
ManagementClass(
"
Win32_NetworkAdapterConfiguration
"
);
moc
=
mc.GetInstances();
string
str
=
""
;
foreach
(ManagementObject mo
in
moc)
{
if
((
bool
)mo[
"
IPEnabled
"
]
==
true
)
str
=
mo[
"
MacAddress
"
].ToString();
}
return
str;
}
}
}
切记要引用命名空间:
using
System.Management
。
心中窃喜,呵呵还是比较简单的。测试,晕 ! 这么做获取的是服务器的MAC。
要获取客户端的MAC用C#做就比较复杂了。网上也有很多类似的例子,不过获取客户端的信息最好还是用客户端脚本比较好。下面是个JavaScript的获取MAC的例子(转):
<
HTML
><
HEAD
><
TITLE
>
WMI Scripting HTML
</
TITLE
>
<
META
http-equiv
=Content-Type
content
="text/html; charset=gb2312"
>
<
SCRIPT
language
=JScript
event
="OnCompleted(hResult,pErrorObject, pAsyncContext)"
for
=foo
>
document.forms[
0
].txtMACAddr.value
=
unescape(MACAddr);
document.forms[
0
].txtIPAddr.value
=
unescape(IPAddr);
document.forms[
0
].txtDNSName.value
=
unescape(sDNSName);
//
document.formbar.submit();
</
SCRIPT
>
<
SCRIPT
language
=JScript
event
=OnObjectReady(objObject,objAsyncContext)
for
=foo
>
if
(objObject.IPEnabled
!=
null
&&
objObject.IPEnabled
!=
"
undefined
"
&&
objObject.IPEnabled
==
true
)
{
if
(objObject.MACAddress
!=
null
&&
objObject.MACAddress
!=
"
undefined
"
)
MACAddr
=
objObject.MACAddress;
if
(objObject.IPEnabled
&&
objObject.IPAddress(
0
)
!=
null
&&
objObject.IPAddress(
0
)
!=
"
undefined
"
)
IPAddr
=
objObject.IPAddress(
0
);
if
(objObject.DNSHostName
!=
null
&&
objObject.DNSHostName
!=
"
undefined
"
)
sDNSName
=
objObject.DNSHostName;
}
</
SCRIPT
>
<
META
content
="MSHTML 6.00.2800.1106"
name
=GENERATOR
></
HEAD
>
<
BODY
>
<
OBJECT
id
=locator
classid
=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6
VIEWASTEXT
></
OBJECT
>
<
OBJECT
id
=foo
classid
=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223
></
OBJECT
>
<
SCRIPT
language
=JScript
>
var
service
=
locator.ConnectServer();
var
MACAddr ;
var
IPAddr ;
var
DomainAddr;
var
sDNSName;
service.Security_.ImpersonationLevel
=
3
;
service.InstancesOfAsync(foo,
'
Win32_NetworkAdapterConfiguration
'
);
</
SCRIPT
>
<
FORM
id
=formfoo
name
=formbar
action
=NICPost.asp
method
=post
><
INPUT
value
=00:05:5D:0E:C7:FA
name
=txtMACAddr
>
<
INPUT
value
=192.168.0.2
name
=txtIPAddr
>
<
INPUT
value
=typ
name
=txtDNSName
>
</
FORM
></
BODY
></
HTML
>
经测试 ok 没有问题 o(∩_∩)o...哈哈 继续做……
绿色通道:
好文要顶
关注我
收藏该文
与我联系
posted on 2008-01-04 09:41
kingboy
阅读(1482)
评论(1)
编辑
收藏
发表评论
1356912
回复
引用
查看
2008-10-31 09:28
|
hailibu
第一次请求时,点击允许ActiveX控件交互后,确实可以获取MAC地址、IP地址和计算机名。但是第二次刷新时就会出现脚本出错,提示txtMACAddr对象为空。
注册用户登录后才能发表评论,请
登录
或
注册
,
返回博客园首页
。
首页
博问
闪存
新闻
园子
招聘
知识库
最新IT新闻
:
·
iPhone 5四大猜想:泪珠状 带LED苹果标识
·
当当网Q4整体亏损1.3亿元 上年同期净利润1480万元
·
把孩子培养成为合格Geek的七个方法
·
担心网购的衣服不合身? 创业公司Clothes Horse用“问答”就能解决你的难题
·
评价社交媒体活动ROI的三个精确指标
»
更多新闻...
最新知识库文章
:
·
编程的艺术:漂亮的代码和漂亮的软件
·
GIT分支管理是一门艺术
·
编程:是一门艺术
·
编程是一门艺术吗?
·
对Java初学者的忠告
»
更多知识库文章...
China-pub 2011秋季教材巡展
China-Pub 计算机绝版图书按需印刷服务
公告
昵称:
kingboy
园龄:
4年3个月
粉丝:
0
关注:
0
<
2008年10月
>
日
一
二
三
四
五
六
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
搜索
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
我的标签
sql
(1)
随笔档案
2009年12月 (1)
2008年8月 (1)
2008年4月 (2)
2008年1月 (9)
2007年12月 (2)
2007年11月 (1)
文章分类
C#(4)
JavaScript(3)
友情链接
最新评论
阅读排行榜
评论排行榜
推荐排行榜