सी ++/विंडोज में मैं उस कंप्यूटर का नेटवर्क नाम कैसे प्राप्त करूं?

एक सी ++ विंडोज़ (एक्सपी और एनटी, यदि यह कोई फर्क पड़ता है) में मैं जिस पर काम कर रहा हूं, मुझे उस कंप्यूटर से जुड़े नेटवर्क नाम को प्राप्त करने की आवश्यकता है जिस पर कोड निष्पादित हो रहा है, ताकि मैं स्थानीय फ़ाइल नामों को C: \ filename.ext \\ network_name \ C $ \ filename.ext पर। यह मैं कैसे करूंगा?

वैकल्पिक रूप से, यदि कोई ऐसा फ़ंक्शन है जो मैंने वर्णित रूपांतरण को ही किया है, तो यह भी बेहतर होगा। मैंने WNetGetUniversalName में देखा, लेकिन यह स्थानीय (सी ड्राइव) फ़ाइलों के साथ काम नहीं कर रहा है।

0
ro fr bn
आपको +1 पहली बार मेरा Google परिणाम एक स्टैक ओवरफ़्लो पोस्ट था। सबको शुक्रीया।
जोड़ा लेखक theschmitzer, स्रोत

4 उत्तर

एक से अधिक विकल्प हैं:

a. Use Win32's GetComputerName() as suggested by Stu.
Example: http://www.techbytes.ca/techbyte97.html
OR
b. Use the function gethostname() under Winsock. This function is cross platform and may help if your app is going to be run on other platforms besides Windows.
MSDN Reference: http://msdn.microsoft.com/en-us/library/ms738527(VS.85).aspx
OR
c. Use the function getaddrinfo().
MSDN reference: http://msdn.microsoft.com/en-us/library/ms738520(VS.85).aspx

0
जोड़ा
दुर्भाग्यवश, ए के लिए लिंक (techbytes.ca) अब उपलब्ध नहीं प्रतीत होता है।
जोड़ा लेखक lowglider, स्रोत

आप Win32 के GetComputerName चाहते हैं:

http://msdn.microsoft.com/en-us/ पुस्तकालय/ms724295 (VS.85) .aspx

0
जोड़ा

मैं पास्कल से विंसॉक के गेटहोस्टनाम() फ़ंक्शन का उपयोग करने पर सहमत हूं। हेयर यू गो:

#include  //of course this is the way to go on windows only

#pragma comment(lib, "Ws2_32.lib")

void GetHostName(std::string& host_name)
{
    WSAData wsa_data;
    int ret_code;

    char buf[MAX_PATH];

    WSAStartup(MAKEWORD(1, 1), &wsa_data);
    ret_code = gethostname(buf, MAX_PATH);

    if (ret_code == SOCKET_ERROR)
        host_name = "unknown";
    else
        host_name = buf;


    WSACleanup();

}
0
जोड़ा

यदि आप केवल स्थानीय कंप्यूटर (नेटबीओएसओएस) का नाम चाहते हैं तो GetComputerName फ़ंक्शन का उपयोग करें। यह केवल स्थानीय कंप्यूटर नाम को पुनर्प्राप्त करता है जो सिस्टम स्टार्टअप पर स्थापित होता है, जब सिस्टम इसे रजिस्ट्री से पढ़ता है।

BOOL WINAPI GetComputerName(
  _Out_   LPTSTR  lpBuffer,
 _Inout_ LPDWORD lpnSize
);

More about GetComputerName

यदि आप DNS होस्ट नाम, DNS डोमेन नाम, या पूरी तरह से योग्य DNS नाम प्राप्त करना चाहते हैं तो GetComputerNameEx फ़ंक्शन को कॉल करें।

BOOL WINAPI GetComputerNameEx(
  _In_    COMPUTER_NAME_FORMAT NameType,
  _Out_   LPTSTR               lpBuffer,
  _Inout_ LPDWORD              lpnSize
);

More about GetComputerNameEx

0
जोड़ा