2010-05-14 13 views
9

मुझे अपने .NET Winform ऐप को यह पता लगाने के लिए एक तरीका चाहिए कि मेरा ऐप लैपटॉप या वर्कस्टेशन पर खोला गया है या नहीं।मैं कैसे बता सकता हूं कि कोई उपयोगकर्ता लैपटॉप का उपयोग कर रहा है

मैंने Environment और SystemInformation पर देखा है लेकिन इसका कोई फायदा नहीं हुआ है। WMI चाल करेगा?

दिशा के लिए धन्यवाद ....


अनुरोध मैं प्रतिकृति मर्ज का उपयोग करता है एक आवेदन हमारे उपयोगकर्ताओं सदस्यों के घरों में काम करने के लिए अनुमति देने के लिए किया है। जो लोग प्रोग्राम का उपयोग करते हैं वे कभी भी मैदान में नहीं जाते हैं और इस तरह के पास केवल टावर होते हैं। यह एक कार्य केवल ऐप है इसलिए हमारे सिस्टम कुछ हद तक नियंत्रित होते हैं। जैसा कि, डेस्कटॉप पर कोई यूपीएस नहीं है और कोई लैपटॉप सीपीयू नहीं है।

मैंने स्थानीय एसक्यूएल और सेंट्रल एसक्यूएल सर्वर के बीच एक सेटिंग के आधार पर स्विच करने में सक्षम होने के लिए अपना डीएएल सेट किया है। मैं इसे सिस्टम पर आधारित स्वचालित रूप से सेट करने में सक्षम होना चाहता हूं।

यदि लैपटॉप होता है तो उन्हें एक टावर, केंद्रीय रूप से स्थानीय इंगित करना चाहिए।

क्या इससे मदद मिलती है? जवाबों को अव्यवस्थित करने के लिए मैंने जानबूझकर इसे छोड़ दिया। विपरीत करने के लिए क्षमा मांगने के लिए मेरी माफ़ी।

+7

दूर, उनके वेबकैम सक्रिय उनकी आंखों की एक तस्वीर लेने, तो उन भयानक छवि सुधारने उपयोगिताओं से एक का उपयोग (जैसा कि आप उन टीवी शो पर हर समय देखते हैं, 'क्योंकि मुझे यकीन है कि वे वास्तव में मौजूद हैं, वे टीवी पर हैं!) कंप्यूटर के प्रकार को उनके छात्र पर छवि प्रतिबिंब से पहचानने के लिए। बेशक, आपको अद्भुत छवि पहचान सॉफ्टवेयर मिला है जो यह स्वचालित रूप से करेगा, है ना ?? – Stewbob

+2

क्या, वास्तव में, आप जानना चाहते हैं, और आप इसे क्यों जानना चाहते हैं? यदि लैपटॉप में आठ सीपीयू और 32 जीबी रैम था, तो क्या आप इसे लैपटॉप के रूप में देखना चाहते हैं? यदि बैटरी पर वर्कस्टेशन चल रहा था, तो क्या आप इसे वर्कस्टेशन के रूप में देखना चाहते हैं? –

+1

जैसा कि अन्य लोगों ने बताया है, यह जवाब देने के लिए एक भ्रामक मुश्किल सवाल है। शायद यह उपयोगी होगा अगर आपने जो कुछ किया है उसके बारे में और अधिक साझा किया है। आपका आवेदन क्या करने जा रहा है जो कंप्यूटर के प्रकार पर निर्भर करता है? –

उत्तर

13

इसमें शामिल किनारे के मामलों के कारण हल करने के लिए यह वास्तव में एक कठिन समस्या है। मैं अब आपके आवेदन के लिए कितना सटीक होना चाहता हूं, लेकिन यह पता लगाने का एक विश्वसनीय तरीका है कि उपयोगकर्ता एक स्टीरियोटाइपिकल लैपटॉप पर है या नहीं।

Win32_Battery

आप EstimatedRunTime पर एक नज़र डालें कर सकते हैं।

EstimatedRunTime

Data type: uint32 
Access type: Read-only 

Estimate in minutes of the time to battery charge depletion under the 

वर्तमान लोड की स्थिति उपयोगिता बंद कर दें, या खो दिया है और से बाहर ही रहता है, या एक लैपटॉप एक शक्ति के स्रोत से काट दिया गया है। यह संपत्ति CIM_Battery से विरासत में मिली है।

तुम भी जांच करना चाह सकते:

Win32_PortableBattery

इसके अलावा, यहाँ एक ऐसी ही समस्या का एक दिलचस्प चर्चा और यूपीएस के साथ काम कर रहा है।

http://forum.bigfix.com/viewtopic.php?pid=19908

विशेष रूप से:

"Microsoft ACPI-Compliant Control Method Battery" 

इसके अलावा, जैसा टिप्पणी में बताया गया है, आप एक लैपटॉप बैटरी काट दिया के साथ दीवार में प्लग पर उन पर विचार करना होगा।

+0

क्या डेस्कटॉप एक बैटरी (यूपीएस के अलावा) को नियोजित कर सकता है? – JYelton

+1

@ जेयलटन: मैंने एक के बारे में नहीं सुना है; लेकिन यूपीएस झूठी सकारात्मक झुकाव का कारण बनता है। विन 7 स्वयं ही उलझन में है। उदाहरण के लिए, यदि आपके पास डेस्कटॉप से ​​कनेक्ट यूपीएस है, तो 7 का मानना ​​है कि आप बैटरी पावर पर चल रहे हैं और इसलिए आपको विंडोज़ अनुभव सूचकांक संख्या नहीं दी जाएगी। – NotMe

+2

हाँ, मैं इसके बारे में सोच रहा हूं। यहां किनारे के मामलों में कुछ झूठे सकारात्मक/नकारात्मक हो सकते हैं। उदाहरण के लिए, क्या होगा यदि उपयोगकर्ता एक लैपटॉप का उपयोग कर रहा है जो बैटरी से डिस्कनेक्ट की दीवार से जुड़ा हुआ है। क्या आप इसे लैपटॉप कहते हैं क्योंकि फ्राई के लड़के ने कहा था कि यह था? या आप इसे डेस्कटॉप के रूप में गिनते हैं क्योंकि वर्तमान में इसका उपयोग कैसे किया जा रहा है? ये डिज़ाइन निर्णय हैं जिन्हें एप्लिकेशन रिलीज़ से पहले तय करना होगा। –

3

(see this question) का उपयोग कर प्रोसेसर के प्रकार प्राप्त करें:

System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE")

आप निर्धारित कर सकते यदि यह एक मोबाइल प्रोसेसर है, तो आप अपने जवाब है।

+7

हालांकि लैपटॉप में डेस्कटॉप प्रोसेसर प्राप्त करना संभव है। – Thomas

+6

... और कुछ लोग कम बिजली की खपत के लिए डेस्कटॉप पर लैपटॉप प्रोसेसर का उपयोग करते हैं। =) – Arkku

+2

शायद लैपटॉप और डेस्कटॉप की परिभाषा को समझाया जाना चाहिए, दूसरे शब्दों में, क्या ओपी प्रोसेसर प्रकार, या चेसिस शैली को जानना चाहता है? अगर उत्तरार्द्ध, जानने का कोई तरीका नहीं है! – JYelton

4

http://msdn.microsoft.com/en-us/library/Aa394474

तो

ChassisTypes को देखो (यह ध्यान देने योग्य है कि WMI आप, बेहतर जानकारी दे देंगे के रूप में सवाल मैं जुड़ा हुआ में विस्तार से बताया लायक। है)

Value Meaning 
1 Other 
2 Unknown 
3 Desktop 
4 Low Profile Desktop 
5 Pizza Box 
6 Mini Tower 
7 Tower 
8 Portable 
9 Laptop 
10 Notebook 
11 Hand Held 
12 Docking Station 
13 All in One 
14 Sub Notebook 
15 Space-Saving 
16 Lunch Box 
17 Main System Chassis 
18 Expansion Chassis 
19 SubChassis 
20 Bus Expansion Chassis 
21 Peripheral Chassis 
22 Storage Chassis 
+0

मुझे यह अस्तित्व में नहीं पता था - मुझे संदेह है कि यह उपयोगी है, यह डेटा कैसे पॉप्युलेट हो जाएगा? मैंने सैकड़ों डेस्कटॉप पीसी बनाए हैं और किसी भी तरह का चेसिस प्रकार चर सेट नहीं किया है। – JYelton

+0

मुझे यकीन है कि डेस्कटॉप के लिए यह दुर्लभ होगा भी इसे पॉप्युलेट करेगा .... हालांकि, लैपटॉप के लिए? क्योंकि वे OEM होते हैं, मुझे लगता है कि वे सही ढंग से सेट होंगे। (शायद) –

+1

आह, पिज्जा बॉक्स। उन फॉर्म कारकों में से एक के लिए प्रयुक्त होता है। मुझे संदेह है कि यह मान अक्सर सटीक या उपयोगी होता है। – Broam

0

शायद आप बैटरी की जानकारी के लिए पूछ सकते हैं?

आपकी नवीन सूचना के आधार पर मैं सिफारिशों के एक जोड़े है this

1

पर एक नजर डालें।

  1. इसे कॉन्फ़िगर करने योग्य विकल्प बनाएं। या तो स्थापना के दौरान या पहले भाग से पूछें कि वे क्या हैं। अनुमान लगाने से यह बहुत अधिक सटीक होगा।

  2. यदि आपके पास पहले से ही जगह में विलय प्रतिकृति है ... क्यों हर किसी को डिस्कनेक्ट/दूरस्थ उपयोगकर्ता के रूप में नहीं मानते?

+0

** 1 - ** यह एक कॉन्फ़िगर करने योग्य विकल्प है जिसे मैं इच्छानुसार स्विच कर सकता हूं। समस्या यह है कि हमारे उपयोगकर्ताओं को तदनुसार टॉगल करने के लिए भरोसा नहीं किया जा सकता है। ** 2 - ** क्योंकि यह एक टावर को दोहराने के लिए व्यर्थ ओवरहेड लगता है जो कभी भी मैदान में नहीं हो सकता है। अतिरिक्त जटिलता और ऊपरी भाग क्यों है? –

+0

"अतिरिक्त जटिलता और ओएच क्यों है?" क्योंकि यह करना सही बात है - हार्डवेयर के आधार पर ग्रेसिंग गलत होने की बहुत गारंटी है और आपको वैसे भी मूल समस्या होगी। हार्डवेयर प्रकार पर निर्णय लेने से वास्तव में आपकी समस्या हल नहीं होती है - कम से कम नहीं, क्योंकि मैं इसे समझता हूं। – Tim

1

मैं निम्नलिखित बैच फ़ाइल सफलतापूर्वक परीक्षण किया है, लेकिन केवल कुछ ही कंप्यूटर पर:

@echo off 
reg query "HKLM\SYSTEM\CurrentControlSet\Enum\ACPI" /s | find "DeviceDesc" | find "ACPI Lid" > nul 
if errorlevel 1 (
    echo This computer IS NOT a laptop ^(no ^"ACPI Lid^" device found in Registry^) 
) else (
    echo This computer IS a laptop ^(^"ACPI Lid^" device found in Registry^) 
) 
echo. & pause 
संबंधित मुद्दे

 संबंधित मुद्दे