[c++] عند تمكين أدباتر للشبكة، يتم تعيين عنوان إب أوتوكونفيغوراتيون


Answers

هل يدعم إينتكونيكتيونماناجر على ويندوز فيستا و Win7؟ لقد نفذت نفس الرمز ما كنت قد كتبت هنا ولكن الحصول على الوصول رفض ل PCon-> الاتصال عند تشغيل التطبيق على غير دخول المشرف. لذلك، يبدو أننا بحاجة إلى رفع الكائن كوم باستخدام مونيكر كوم.

التحيات IP_Telephony

Question

أنا تطوير تطبيق ويندوز فيستا و 7 في فيسوال ستوديو C ++، التي يجب أن تعيين عنوان إب ثابت إلى بطاقة شبكة الاتصال وإنشاء اتصال. لهذا، أنا إدخال قيم إب في التسجيل جنبا إلى جنب مع تعيين قيمة تمكين دكب إلى 0. ثم أحتاج إلى تعطيل ثم تمكين بطاقة شبكة الاتصال هذه القيم نافذة المفعول. لهذا، أنا باستخدام "إينتكونكتيونماناجر" في التعليمات البرمجية التالية:

  CoInitialize(0);
  typedef void (__stdcall * PNcFreeNetconProperties)(NETCON_PROPERTIES* pProps);
  HMODULE hmod = LoadLibrary(L"netshell.dll");
  if (!hmod) 
    return false;

  LPNcFreeNetconProperties NcFreeNetconProperties =
    (LPNcFreeNetconProperties)GetProcAddress(hmod, "NcFreeNetconProperties");

  if (!NcFreeNetconProperties )
    return false;

  INetConnectionManager * pMan = 0;

  HRESULT hres = CoCreateInstance(CLSID_ConnectionManager,
                  0,
                  CLSCTX_ALL,
                  __uuidof(INetConnectionManager),
                  (void**)&pMan);

  if (SUCCEEDED(hres))  
  {    
      IEnumNetConnection * pEnum = 0;
      hres = pMan->EnumConnections(NCME_DEFAULT, &pEnum);
     if (SUCCEEDED(hres)) 
     {
         INetConnection * pCon = 0;
         ULONG count;
         bool done = false;
         while (pEnum->Next(1, &pCon, &count) == S_OK && !done)
         {
             NETCON_PROPERTIES * pProps = 0;
             hres = pCon->GetProperties(&pProps);
             if (SUCCEEDED(hres)) 
             {
                 if (wcscmp(pProps-pszwDeviceName, AdapterName) == 0)
                 {
                     if (bEnable)
                         result = (pCon->Connect() == S_OK);
                     else
                         result = (pCon->Disconnect() == S_OK);
                     done = true;
                 }

                 NcFreeNetconProperties(pProps);
              }
              pCon->Release();
         }
         pEnum->Release();
     }
    pMan->Release();
  }
  FreeLibrary(hmod);
  CoUninitialize();

تعطيل وتعطيل بطاقة الشبكة بشكل جيد جدا، ولكن يتم الحصول على تعيين القيم IPv4 التكوين التلقائي بدلا من القيم الثابتة في التسجيل. يعمل هذا الغريب بشكل صحيح للاتصال دكب ولكن ليس للاتصال ثابت.

ملاحظة: حتى أنني حاولت سيتيفنتري لذلك، لكنه فشل في تعطيل أو تمكين بطاقة الشبكة.

يرجى اقتراح أين أفعل خطأ أو أي شيء أنا في عداد المفقودين.

شكرا مع تحياتي،

فيناياك




Related