0
나는 내 컴퓨터의 모든 mac 주소를 찾아서 암호화 한 후 레지스트리에있는 암호화 된 값과 비교하는 내 소프트웨어에 대한 오리지널 라이센스 키가 있습니다. 레지스트리의 값이 방금 찾은 값 중 하나와 일치하면 소프트웨어가로드됩니다. 나는 항상 MAC 주소에 대해 동일한 값을 얻을 것이라고 기대할 것이다. 그러나 몇몇 기계에서는 그렇지 않다. 아무도 왜 MAC 주소가 고정되어 있지 않은지 또는이 문제를 어떻게 해결할 수 있는지 설명 할 수 있습니까?어떻게 MAC 주소가 변경 될 수 있습니까?
감사
//// GET MAC ADDRESS
String sMacAddress = String.Empty;
ManagementScope theScope = new ManagementScope("\\\\" +Environment.MachineName + "\\root\\cimv2");
DGCSLogger.log.Trace("Management scope");
StringBuilder theQueryBuilder = new StringBuilder();
theQueryBuilder.Append("SELECT MACAddress FROM Win32_NetworkAdapter");
ObjectQuery theQuery = new ObjectQuery(theQueryBuilder.ToString());
DGCSLogger.log.Trace("Creating searcher");
ManagementObjectSearcher theSearcher = new ManagementObjectSearcher(theScope, theQuery);
DGCSLogger.log.Trace("Creating collection");
ManagementObjectCollection theCollectionOfResults = theSearcher.Get();
DGCSLogger.log.Trace("Got management objects");
//// GET VALUE FROM REGISTRY
String sSavedScrambled = RegistryHelper.GetCurrentUserValue(@"Software\VB and VBA Program Settings\FMPos\settings", "LicenceKey");
String sSavedLicenceKey = String.Empty;
if (sSavedScrambled != null)
sSavedLicenceKey = DGCS.Common.Password.UnScramblePassword(sSavedScrambled);
String sMacNoLicenceKey = String.Empty;
String sMacNo = String.Empty;
///// COMPARE VALUES WITH REGISTRY VALUE
foreach (ManagementObject theCurrentObject in theCollectionOfResults)
{
DGCSLogger.log.Trace("foreach object");
if (theCurrentObject["MACAddress"] != null)
{
DGCSLogger.log.Trace("foreach object: " + theCurrentObject["MACAddress"].ToString().Substring(0, 5));
String macAdd = theCurrentObject["MACAddress"].ToString();
sMacNo = DGCS.Common.Password.ScrambleMacNumber(theCurrentObject["MACAddress"].ToString());
sMacNoLicenceKey = DGCS.Common.Password.CreateMacNoPassword(sMacNo);
DGCSLogger.log.Trace(": " + theCurrentObject["MACAddress"].ToString().Substring(0, 5));
if (sMacNoLicenceKey.Trim() == sSavedLicenceKey.Trim())
lkCheck.HasLicenceKey = true;
}
}
_ "왜 아무도 MAC 주소가 고정되어 있지 않은 이유를 설명 할 수 있습니까?"- 그렇지 않기 때문입니다. 그 이유는 기계 관리자에게 문의하십시오. 여러 가지 이유가있을 수 있습니다. _ 또는 "이 문제를 극복하는 방법"_ _ "하드웨어 기반 소프트웨어 라이센스 키 구현 방법"_에 대한 300 개 이상의 질문을 참조하십시오. – CodeCaster
쿼리를 다음으로 변경했습니다. theQueryBuilder.Append ("SELECT MACAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = true"); 이렇게하면 하나의 네트워크 어댑터로 제한됩니다. 이는 라이센스 키가 네트워크 어댑터를 변경하는 경우 다시 입력해야한다는 의미입니다. 그러나 적어도 당분간은 상수 값과 비교한다는 의미입니다. –