我目前正在研究用C#.NET 4.5编写的软件解决方案。该软件使用基于硬件ID(例如MAC地址或CPU ID)的许可系统。 一位用户现在报告说,在使用带有Microsoft App-V的软件时,他遇到了许可问题。他提到每次新用户想要使用该软件时,该应用程序都会抱怨该许可证无效(由于硬件的更改)。 如果以前注册的用户在其他客户端上使用本软件,也会发生这种情况。 我现在的问题是,当通过App-V运行应用程序时,下面的代码片断返回了什么,客户端的Mac地址或应用程序实际运行的服务器的Mac地址。如果第一个是真的,有没有办法从服务器获取相同的信息,使用.NET中的某些功能?
private static string getMAC() {
ManagementClass oMClass = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection MOCol = oMClass.GetInstances();
string mac = "";
foreach (ManagementObject MO in MOCol) {
if (MO != null) {
if (MO["MacAddress"] != null) {
mac = MO["MacAddress"].ToString().Replace(":", "");
if (mac != string.Empty) {
break;
}
}
}
return mac;
}
答案 0 :(得分:4)
App-V维基百科文章Limitations section中的倒数第二个项目符合您的问题完全:
- 许可政策:具有许可实施的应用程序与计算机绑定,例如许可证与系统的MAC地址或硬盘序列号相关联。如果用户在第一次启动顺序应用程序时无法手动或通过脚本执行激活,则不应对此类应用程序进行排序。
如果您在应用的每次运行时验证许可,而不是仅在应用安装时验证一次,则需要告诉您的客户您不能支持App-V。如果这意味着您将失去一个有价值的客户,那么很快就会摆脱这个计划,这是我们无法为您做出的商业决策。