Silverlight 4.0 通过Silverlight 4获取MAC地址
我试过这么做- 但这三个条件总是错误的:Silverlight 4.0 通过Silverlight 4获取MAC地址,silverlight-4.0,ip-address,mac-address,Silverlight 4.0,Ip Address,Mac Address,我试过这么做- 但这三个条件总是错误的: if ((Application.Current.IsRunningOutOfBrowser) && (Application.Current.HasElevatedPermissions) && (AutomationFactory.IsAvailable)) 我想这是因为权限和安全性的原因。。 有什么方法可以从客户端获取物理IP地址吗? 正如我所说,我使用Silverlight4 Silverlight的安全
if ((Application.Current.IsRunningOutOfBrowser) &&
(Application.Current.HasElevatedPermissions) &&
(AutomationFactory.IsAvailable))
我想这是因为权限和安全性的原因。。
有什么方法可以从客户端获取物理IP地址吗?
正如我所说,我使用Silverlight4 Silverlight的安全模型是这样的:您无法从浏览器沙箱之外的客户机以及分配给独立存储的(少量)磁盘空间访问任何内容。客户端计算机的MAC地址将属于该类别。但是,您可以使用提升的权限“脱离浏览器”(OOB)运行您的应用程序,这是本测试要检查的 第一个条件说明您必须用完浏览器,所以第一个问题是“您的应用程序是否启用了OOB,并且没有broswer?” 否则,测试将失败 然后,如果应用程序正在运行OOB,那么它也必须以提升的权限运行。是这样吗
至于AutomationFactory测试-上的答案意味着当应用程序使用提升权限的浏览器时,它将为真。使用来自的代码示例(也提到了该问题)
public partial class MyClient : UserControl
{
public MyClient()
{
MACAddressManager macAddressManager = new MACAddressManager();
macAddressManager.OnGetMACAddressCompleted += new EventHandler(macAddressManager_OnGetMACAddressCompleted);
macAddressManager.BeginGetMACAddress();
}
void macAddressManager_OnGetMACAddressCompleted(object sender, EventArgs e)
{
MACAddressManager manager = (MACAddressManager) sender;
// MAC Address value is in manager.MACAddress
}
}
public class MACAddressManager
{
private dynamic sWbemServices;
private dynamic sWbemSink;
public string MACAddress { get; private set; }
public event EventHandler OnGetMACAddressCompleted;
private void EndGetMACAddress(object sender, EventArgs e)
{
dynamic objWbemObject = sender;
MACAddress = objWbemObject.MACAddress;
if (OnGetMACAddressCompleted != null)
OnGetMACAddressCompleted(this, EventArgs.Empty);
}
public void BeginGetMACAddress()
{
if ((Application.Current.IsRunningOutOfBrowser) && (Application.Current.HasElevatedPermissions) && (AutomationFactory.IsAvailable))
{
dynamic sWbemLocator = AutomationFactory.CreateObject("WbemScripting.SWBemLocator");
sWbemServices = sWbemLocator.ConnectServer(".");
sWbemServices.Security_.ImpersonationLevel = 3; //impersonate
sWbemSink = AutomationFactory.CreateObject("WbemScripting.SWbemSink");
sWbemSink.OnObjectReady += new EventHandler(EndGetMACAddress);
string query = "SELECT * FROM Win32_NetworkAdapterConfiguration where IPEnabled=true";
sWbemServices.ExecQueryAsync(sWbemSink, query);
}
}
}