void
GetAll()
{
IDictionary
<
string
,
string
> hostList =
new
Dictionary<
string
,
string
>
();
DirectoryEntry MainGroup
=
new
DirectoryEntry(
"
WinNT:
"
);
foreach
(DirectoryEntry domain
in
MainGroup.Children)
{
foreach
(DirectoryEntry pc
in
domain.Children)
{
try
{
System.Net.IPAddress[] remoteHost
=
Dns.GetHostAddresses(pc.Name);
hostList.Add(pc.Name, remoteHost[
0
].ToString());
}
catch
{ }
}
}
using
(StreamWriter sw =
new
StreamWriter(
"
c:\\pp.txt
"
,
true
))
{
foreach
(KeyValuePair<
string
,
string
> child
in
hostList)
{
sw.WriteLine(Environment.NewLine
+
"
name:
"
+ child.Key +
"
ip:
"
+
child.Value);
}
sw.Flush();
sw.Close();
}
}
以上把局域网的计算机以及IP保存到c盘
再根据ip地址获取mac地址
public
string
GetMac(
string
IP)
{
string
dirResults =
""
;
ProcessStartInfo psi
=
new
ProcessStartInfo();
Process proc
=
new
Process();
psi.FileName
=
"
nbtstat
"
;
psi.RedirectStandardInput
=
false
;
psi.RedirectStandardOutput
=
true
;
psi.Arguments
=
"
-A
"
+
IP;
psi.UseShellExecute
=
false
;
proc
=
Process.Start(psi);
dirResults
=
proc.StandardOutput.ReadToEnd();
proc.WaitForExit();
dirResults
= dirResults.Replace(
"
\r
"
,
""
).Replace(
"
\n
"
,
""
).Replace(
"
\t
"
,
""
);
Regex reg
=
new
Regex(
"
Mac[ ]{0,}Address[ ]{0,}=[ ]{0,}(?<key>((.)*?))__MAC
"
, RegexOptions.IgnoreCase |
RegexOptions.Compiled);
Match mc
= reg.Match(dirResults +
"
__MAC
"
);
if
(mc.Success)
{
return
mc.Groups[
"
key
"
].Value; }
else
{
reg
=
new
Regex(
"
Host not found
"
, RegexOptions.IgnoreCase |
RegexOptions.Compiled);
mc
=
reg.Match(dirResults);
if
(mc.Success)
{
return
"
Host not found!
"
;
}
else
{
return
""
; }
}
}
需要的稍作更改即可使用

