我用C#写了一个COM组件,在服务器上注册后给ASP调用,实现的主要功能是读取硬盘序列号和网卡物理地址。具体代码如下:
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");string s_MAC = "", s_Disk = "";
foreach (ManagementObject mo in moc)
{
if ((bool)mo["IPEnabled"] == true)
{
s_MAC = "MAC:" + mo["MacAddress"].ToString();
break;
}
}disk.Get();
s_Disk = disk.GetPropertyValue("VolumeSerialNumber").ToString();此COM组件在WIN7系统下测试无误,但部署到WIN2003服务器上执行提示 "访问遭到拒绝"。
我在网上搜索了相关资料,大部分是说WIN2003的安全机制限制了COM控件对硬件的直接读取功能,但根据上面说的做了很多权限修改的工作后还是无法实现正常的读取。
后来想采用 DriveInfo[] 来获取硬盘信息,这个执行是不会报错,但无法取得硬盘序列号。
请问哪位大哥有相应的解决方案,可以在WIN2003系统下实现COM组件读取硬盘序列号的功能,不胜感谢。
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\"");string s_MAC = "", s_Disk = "";
foreach (ManagementObject mo in moc)
{
if ((bool)mo["IPEnabled"] == true)
{
s_MAC = "MAC:" + mo["MacAddress"].ToString();
break;
}
}disk.Get();
s_Disk = disk.GetPropertyValue("VolumeSerialNumber").ToString();此COM组件在WIN7系统下测试无误,但部署到WIN2003服务器上执行提示 "访问遭到拒绝"。
我在网上搜索了相关资料,大部分是说WIN2003的安全机制限制了COM控件对硬件的直接读取功能,但根据上面说的做了很多权限修改的工作后还是无法实现正常的读取。
后来想采用 DriveInfo[] 来获取硬盘信息,这个执行是不会报错,但无法取得硬盘序列号。
请问哪位大哥有相应的解决方案,可以在WIN2003系统下实现COM组件读取硬盘序列号的功能,不胜感谢。
谢谢各位。