2008-08-14 15 views
7

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

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

+0

+1 आप के बारे में

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

अधिक। पहली बार मेरा Google परिणाम एक स्टैक ओवरफ़्लो पोस्ट था। धन्यवाद सभी। – theschmitzer

उत्तर

9

एक से अधिक विकल्प हैं। स्टू द्वारा सुझाए गए Win32 के GetComputerName() का उपयोग करें।
उदाहरण: http://www.techbytes.ca/techbyte97.html
या
बी। विंसॉक के तहत फ़ंक्शन gethostname() का उपयोग करें। यह फ़ंक्शन क्रॉस प्लेटफॉर्म है और यदि आपकी ऐप विंडोज के अलावा अन्य प्लेटफार्मों पर चलने वाला है तो आपकी सहायता कर सकती है।
एमएसडीएन संदर्भ: http://msdn.microsoft.com/en-us/library/ms738527(VS.85).aspx
या
सी। फंक्शन getaddrinfo() का प्रयोग करें।
एमएसडीएन संदर्भ: http://msdn.microsoft.com/en-us/library/ms738520(VS.85).aspx

+0

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

1

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

#include <winsock2.h> //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

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

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

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

अधिक। GetComputerNameEx