उपयोगकर्ता एजेंट या जावास्क्रिप्ट से 64-बिट या 32-बिट विंडोज का पता लगाएं?


80

मैं एक डाउनलोड के सही संस्करण की पेशकश करना चाहता हूं। मेरे पास जो संस्करण हैं:

  • 32-बिट विंडोज
  • 64-बिट विंडोज
  • लिनक्स

उपयोगकर्ता एजेंट फ़ील्ड का उपयोग करके लिनक्स का पता लगाना आसान है; लेकिन क्या यह संभव है कि विंडोज 32-बिट या 64-बिट का पता लगा सके?

उपयोगकर्ता अजीब ब्राउज़रों का उपयोग कर रहे होंगे - IE और फ़ायरफ़ॉक्स आम हैं, और हमारे पास संभवतः एक ओपेरा उपयोगकर्ता कहीं है; शायद एक क्रोम उपयोगकर्ता भी। मुझे पता है कि 64-बिट विंडोज 7 जहाज 32-बिट और IE के 64-बिट संस्करणों के साथ हैं, और मैं उन्हें अपने डाउनलोड के 64-बिट संस्करण दोनों को भेजना चाहूंगा।

(जोड़ने के लिए संपादित: मुझे पता है कि मुझे सभी विकल्प प्रदान करने चाहिए, और मैं करूंगा। लेकिन लोग विकल्प नहीं पढ़ते हैं । इसलिए मैं डिफ़ॉल्ट रूप से सही डाउनलोड प्रदान करना चाहता था, जिससे उपयोगिता में सुधार हो सके। बेशक, यह मददगार है। अगर मुझे यह सही लगता है, तो यह गलत है अगर मैं इसे गलत समझूं। और अब तक के जवाबों से, ऐसा नहीं लगता कि ऐसा करने का एक विश्वसनीय तरीका है)।


1
हैरानी की बात है कि आपका लिनक्स संस्करण x86, x64 और ARM पर काम करता है।
एमएसलेटर

9
"लिनक्स संस्करण" स्रोत कोड है। Windows संस्करण बाइनरी हैं।
user9876

जवाबों:


53

इसे आज़माएं, उपयोगकर्ता-एजेंट स्ट्रिंग में WOW64 (64-बिट पर 32-बिट) या Win64 (मूल 64-बिट) के लिए दिखता है।

    if (navigator.userAgent.indexOf("WOW64") != -1 || 
        navigator.userAgent.indexOf("Win64") != -1 ){
       alert("This is a 64 bit OS");
    } else {
       alert("Not a 64 bit OS");
    }


5
यह 64-बिट विंडोज 7 पर सफारी को छोड़कर, अच्छी तरह से काम करता है, जिसमें WOW64 का अभाव है, Win64 का अभाव है, और window.navigator.platformइसे win32 के रूप में रिपोर्ट करता है । मैंने इसे सफारी 4 / विन में आज़माया है; बाद के संस्करण बदल सकते हैं।
विल मार्टिन

2
100% सटीक नहीं है लेकिन यह एक अच्छा सुराग है, क्योंकि इसे मज़बूती से पता लगाने का कोई बेहतर तरीका नहीं है।
विटिम.स

39

मैंने कुछ परीक्षण किए हैं। यहाँ परिणाम हैं, आशा है कि यह मदद करता है:

64 बिट MacOS + 64 बिट सफारी या 32 बिट क्रोम:
window.navigator.platform = MacIntel

32 बिट विंडो + सफारी:
window.navigator.platform = Win32

64 बिट विंडोज + 64 बिट IE:
window.navigator.platform = Win64
window.navigator.cpuClass = x64

64 बिट विंडोज + 32 बिट IE:
window.navigator.platform = Win32
window.navigator.cpuClass = x86

64 बिट विंडोज + 32 फ़ायरफ़ॉक्स (या क्रोम):
window.navigator.platform = Win32

32 बिट लाइन टकसाल (i686) + फ़ायरफ़ॉक्स:
window.navigator.platform = लिनक्स i686

64 बिट उबंटू (x86_64) + 32 बिट क्रोम:
window.navigator.platform = लिनक्स i686

64 बिट Ubuntu + 64 बिट एपिफेनी:
window.navigator.platform = लिनक्स x86_64

अब तक मैंने इस कोड का उपयोग किया है:

deployJava.isWin64OS = function() {
    return navigator.userAgent.indexOf('WOW64')>-1 || window.navigator.platform=='Win64';
};

1
यह सटीक नहीं है। विंडोज 64-बिट w / क्रोम 64-बिट पैदावार "Win32" के रूप में अच्छी तरह से।
अपोलो

31

लगभग 14000 अद्वितीय उपयोगकर्ता-एजेंटों ( यहां से ) का विश्लेषण करते हुए , मैं निम्नलिखित स्ट्रिंग के साथ देखने के लिए आया हूं:

  • x86_64
  • x86-64
  • विन 64
  • x64; (अर्धविराम पर ध्यान दें! इसके बिना आपके पास झूठी सकारात्मकता होगी।)
  • amd64
  • AMD64
  • वाह ६४
  • x64_64

इसके अतिरिक्त, हालांकि उनके अलग-अलग निर्देश सेट हैं और इंटेल x86_64 के साथ संगत नहीं हैं, आप निम्नलिखित का पता लगाना चाह सकते हैं:

  • िया64
  • स्पार्क 64
  • ppc64
  • IRIX64

हालांकि सावधान रहें, बस "64" या यहां तक ​​कि "x64" वाली किसी भी चीज़ की तलाश न करें। Chrome के बिल्ड नंबर, स्पाइडर / बॉट, लाइब्रेरी, .NET वर्जन, रिज़ॉल्यूशन आदि में 32-बिट्स (या अन्य) OS होने के बावजूद स्ट्रिंग "x64" हो सकता है।

ध्यान दें कि आप उन सभी स्ट्रिंग केस-असंवेदनशील के लिए खोज सकते हैं।

मुझे एआरएम पर कुछ भी नहीं मिला है। शायद कोई और? कृपया संपादित करें, यह एक सामुदायिक विकि है।


मैं UA स्ट्रिंग में RegExp `/ \ barm / i के खिलाफ परीक्षण कर रहा हूं। "आर्म" से पहले शब्द सीमा महत्वपूर्ण है, अन्यथा यह उबंटू 9.10 (कर्मिक कोअला) के लिए यूए स्ट्रिंग से मेल खाएगा। मैंने इस पैटर्न का निर्माण कुछ यूए स्ट्रिंग्स के आधार पर useragentstring.com/pages/All और code.google.com/p/google-web-toolkit/issues/detail?id=8038
Rob W

24

आप window.navigator.platformऔर जाँच कर सकते हैं window.navigator.cpuClass

मुझे आपकी स्थिति पर यकीन नहीं है, लेकिन मैं सिर्फ वही करूंगा जो अन्य साइटें करती हैं और उपयोगकर्ता को यह चुनने देती है कि उन्हें कौन सा डाउनलोड मिलेगा। वे इसे दूसरी मशीन के लिए डाउनलोड कर सकते हैं, एक फ्लैश डिवाइस पर डाल सकते हैं, या बस 32-बिट संस्करण को अपने 64-बिट बॉक्स पर चलाने के लिए चाहते हैं। जो भी कारण, मैं बल्कि विकल्प होगा।


6
जहां मैं काम करता हूं, हमारे पास लंबे समय से सभी डाउनलोड विकल्प उपलब्ध हैं, लेकिन उपयोगकर्ता अक्सर अपने सिस्टम के लिए गलत संस्करण डाउनलोड करने की गलती करते हैं।
एक्सुप्रो

1
जब वे अनिश्चित होते हैं, तो अधिकांश उपयोगकर्ता पहले वाले को चुन लेते हैं। जब आप उपयोगकर्ता को एक सिफारिश देना चाहते हैं, तो आप इस संस्करण को पहले रख सकते हैं और शायद दूसरों की तुलना में इसे थोड़ा बड़ा कर सकते हैं।
फिलिप

4
विंडोज 7 पर फ़ायरफ़ॉक्स, 64-बिट: navigator.cpuClass === undefined, navigator.platform === "Win32"। IE9, एक ही मशीन पर navigator.cpuClsas === "x86"। 64-बिट विंडोज का पता लगाने के लिए इनमें से किसी का भी उपयोग नहीं किया गया है। हालाँकि, navigator.userAgentइसमें WOW64उत्तर मान्य है।
क्रिस मॉर्गन

19

सबसे विश्वसनीय समाधान एक 32 बिट लोडर एप्लिकेशन बनाना होगा जो आर्किटेक्चर का पता लगाता है और फिर आपके एप्लिकेशन के उपयुक्त संस्करण को डाउनलोड और इंस्टॉल करता है।

मैंने RC और Pino से अन्य दो उत्तरों की जाँच की है। वे दोनों एक ही समस्या के कारण काम नहीं करते हैं जैसा कि आप सुझाव देते हैं - 64-बिट विंडोज पर 32-बिट आईईए प्लेटफ़ॉर्म को 32-बिट के रूप में गलत पहचान देगा। जैसा कि ज्यादातर लोग 64-बिट विंडोज पर 32-बिट IE चलाते हैं (कई प्लगइन्स जैसे फ्लैश 64-बिट में उपलब्ध नहीं हैं), बहुत सारी अशुभ पहचान होगी

ली


1
मैं किसी को (मुझे नहीं) अनुमान लगा रहा हूं क्योंकि यह सीधे सवाल का जवाब नहीं देता है। हालांकि, यह पूरा करने का एक वैकल्पिक तरीका है कि मैं क्या करना चाहता हूं।
user9876

3
32 बिट IE में WOW64 टोकन शामिल है, इसलिए इसे चुनना आसान होगा।
नाथन उस्मान

मेरी राय में सबसे अच्छा और सबसे उपयोगकर्ता के अनुकूल समाधान।
रादु

मैं निश्चित रूप से इन इंस्टॉलरों से नफरत करता हूं, लेकिन यह एक विकल्प है, कृपया अपने उपयोगकर्ताओं को मजबूर न करें फिर अपने beutiful टूलबार को भी स्थापित करें।
विटिम.स

9

100% निश्चितता के साथ नहीं जैसा कि आप कहते हैं कि ब्राउज़र एक 64 बिट संस्करण हो सकता है जबकि ओएस 64 बिट है।

ब्राउज़र का पता लगाने के लिए, कृपया निम्नलिखित कोड आज़माएँ:

<script language=javascript>   
  <!--   
  document.write("CPU :"+window.navigator.cpuClass);   
  //-->   
</script> 

सीपीयू: ia64

IE के लिए।

http://msdn.microsoft.com/en-us/library/ms531090%28VS.85%29.aspx

वाणिज्यिक उत्पाद: https://www.cyscape.com/showbrow.aspx


5
यह मूल प्रश्न को संबोधित नहीं करता है। यह 32-बिट IE का उपयोग करके 64 बिट विंडोज 7 बॉक्स पर "x86" का उत्पादन करता है। प्रश्न सिस्टम बिटनेस और ओएस का पता लगाने के लिए कह रहा था, ब्राउजर बिटनेस के लिए नहीं।
पीट

5

64-बिट IE के साथ 64-बिट विंडोज के window.navigator.platformलिए "विन window.navigator.cpuClass64" होगा और "x64" होगा।

32-बिट IE के साथ 64-बिट विंडोज के लिए, window.navigator.platform"विन 32" window.navigator.cpuClassहोगा और "x86" होगा।

32-बिट विंडोज के लिए, window.navigator.platform"विन 32 " window.navigator.cpuClassहोगा और अपरिभाषित होगा (मुझे लगता है)।

-

स्रोत: मैंने एक ऐप बनाया है जो यह निर्धारित करने के लिए जावास्क्रिप्ट का उपयोग करता है कि क्या कोई 32 बिट या 64 बिट प्रोसेसर का उपयोग कर रहा हैआप यहाँ GitHub पर कोड देख सकते हैं


आप अपने अंतिम बिंदु के बारे में गलत हैं, इसका मतलब यह नहीं है कि उपयोगकर्ता के पास 32-लेकिन विंडोज़ मशीन है। वास्तव में उपरोक्त सभी आपको ब्राउज़र की जानकारी देता है, न कि ओएस को।
मो बेगी

3

मैंने इन जेएस कार्यों में ऊपर अच्छी खोज के परिणामों को फिर से शुरू किया। आशा है कि वे अपनी आवश्यकताओं की त्वरित प्रतिक्रिया (और, साथ ही, मेरी भी!) को पकड़ने के लिए यहाँ हर किसी की मदद कर सकते हैं!

function get_bits_system_architecture()
{
    var _to_check = [] ;
    if ( window.navigator.cpuClass ) _to_check.push( ( window.navigator.cpuClass + "" ).toLowerCase() ) ;
    if ( window.navigator.platform ) _to_check.push( ( window.navigator.platform + "" ).toLowerCase() ) ;
    if ( navigator.userAgent ) _to_check.push( ( navigator.userAgent + "" ).toLowerCase() ) ;

    var _64bits_signatures = [ "x86_64", "x86-64", "Win64", "x64;", "amd64", "AMD64", "WOW64", "x64_64", "ia64", "sparc64", "ppc64", "IRIX64" ] ;
    var _bits = 32, _i, _c ;
    outer_loop:
    for( var _c = 0 ; _c < _to_check.length ; _c++ )
    {
        for( _i = 0 ; _i < _64bits_signatures.length ; _i++ )
        {
            if ( _to_check[_c].indexOf( _64bits_signatures[_i].toLowerCase() ) != -1 )
            {
               _bits = 64 ;
               break outer_loop;
            }
        }
    }
    return _bits ; 
}


function is_32bits_architecture() { return get_bits_system_architecture() == 32 ? 1 : 0 ; }
function is_64bits_architecture() { return get_bits_system_architecture() == 64 ? 1 : 0 ; }

झसे आज़माओ:

document.write( "Which is my current bits system architecture ? " + get_bits_system_architecture() + "<br>" );

document.write( "Is it 32 bits ? " + ( is_32bits_architecture() ? "YES" : "NO" ) + "<br>" );

document.write( "Is it 64 bits ? " + ( is_64bits_architecture() ? "YES" : "NO" ) );

सभी को धन्यवाद!


2

मैंने निम्नलिखित कोड का उपयोग किया:

var is32BitBrowser = true;
if( window.navigator.cpuClass != null && window.navigator.cpuClass.toLowerCase() == "x64" )
   is32BitBrowser = false;
if( window.navigator.platform.toLowerCase() == "win64" )
   is32BitBrowser = false;

यह मैक कंप्यूटरों की अपेक्षा हर जगह काम करता है। और दुर्भाग्य से ऐसा लगता है कि जावास्क्रिप्ट के माध्यम से उस जानकारी को प्राप्त करना संभव नहीं है :(। हालांकि एक और चाल वहाँ हो सकती है। क्योंकि एडोब ने x64 ब्राउज़रों पर फ्लैश प्लेयर का समर्थन नहीं किया है, आप बस इसका पता लगाने की कोशिश कर सकते हैं। यदि पहचान सफल है, तो। की तुलना में यह निश्चित रूप से 32 बिट ब्राउज़र है, यदि नहीं, तो यह 32 बिट ब्राउज़र के बिना फ्लैश प्लगइन या यह 64 बिट ब्राउज़र है। क्योंकि फ्लैश प्लेयर की प्रवेश दर काफी विशाल है (देखें http://www.adobe.com/products/player_census/ Flashplayer / version_penetration.html ), यह मैक के तहत कम से कम x32 ब्राउज़र का पता लगाने के लिए पर्याप्त होना चाहिए।


1

किसी भी Internet Explorer ब्राउज़र के लिए 64-बिट विंडोज़ 64-बिट IE

if (navigator.userAgent.indexOf("MSIE") != -1 && navigator.userAgent.indexOf("Win64") != -1 && navigator.userAgent.indexOf("x64") != -1){

   alert("This is 64 bit browser");

}
else {

   alert("Not 64 bit browser");

}

1

दोनों window.navigator.cpuClass और window.navigator.platform ब्राउज़र प्लेटफ़ॉर्म को वापस करते हैं। सिस्टम प्लेटफॉर्म नहीं। इसलिए यदि आप 64-बिट सिस्टम पर 32-बिट ब्राउज़र चला रहे हैं तो दोनों वैरिएबल 32-बिट लौटाएंगे। जो गलत होगा।


1

मुझे यह पुराना सवाल मिला है और मैंने हाल ही में खुले स्रोत पुस्तकालय के साथ अद्यतन करने के बारे में सोचा है जो मुझे मिला: https://github.com/faisalman/ua-parser-js

डॉक्स के अनुसार, विधि getCPU() returns { architecture: '' }, निम्नलिखित संभव मूल्यों के साथ 68k, amd64, arm, arm64, avr, ia32, ia64, irix, irix64, mips, mips64, pa-risc, ppc, sparc, sparc64:।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.