मैं उस फ़ोल्डर का पूरा पथ कैसे निर्धारित करूं जिसमें वीबीए का उपयोग कर 32-बिट प्रोग्राम शामिल हैं? इसे 32-बिट विंडोज सिस्टम पर "प्रोग्राम फ़ाइलें" कहा जाता है, लेकिन 64-बिट सिस्टम पर इसे "प्रोग्राम फ़ाइलें (x86)" कहा जाता है।"प्रोग्राम फाइल" फ़ोल्डर का पथ प्राप्त करें जिसमें 32-बिट प्रोग्राम
उत्तर
पर्यावरण चाल करना होगा:
debug.print Environ("ProgramFiles")
debug.print Environ("PROGRAMFILES(X86)")
'If you want to check if current PC is x64
debug.print Environ("PROCESSOR_IDENTIFIER")
वातावरण चर की सूची here पाया जा सकता है।
अद्यतन: बातचीत मैं ईसाई के साथ था और मेरी टिप्पणी के आधार पर किया है के आधार पर, मैं इस एक छोटे से अधिक में देखा।
मैं दो मशीनों मैं पर परीक्षण किया है:
- मशीन 1: 7 विन परम, 64 बिट, Office 2010 64 बिट
- मशीन 2: 7 विन अंतिम 32 बिट, कार्यालय : 2007 32 बिट
मैं तत्काल विंडो में निम्नलिखित बयानों भाग गया
परिणाम
मशीन 1:
C:\Program Files
C:\Program Files (x86)
C:\Program Files
मशीन 2:
C:\Program Files
//Blank//
//Blank//
तो, इन सीमित निष्कर्षों के आधार पर, आप अगर ProgramW6432 को देखने के लिए चाहते हो सकता है एक कीमत। यदि नहीं, 32 बिट मानें और प्रोग्रामफाइल का उपयोग करें।
IF Environ("ProgramW6432") <> "" THEN
'I'm 64 bit so check both ProgramW6432 and PROGRAMFILES(X86)
ELSE
'I'm 32 bit so check ProgramFiles
END IF
विपरीत, यदि आप PROCESSOR_IDENTIFIER का उपयोग 64 बनाम 86 निर्धारित करने के लिए और एक ही बात कर सकता है।
मैं नहीं कहूंगा कि मूर्खतापूर्ण तरीका है लेकिन आपको सही रास्ते पर ले जाना चाहिए।दोनों
Environ("ProgramFiles")
और
Environ("PROGRAMFILES(X86)")
कम से कम मेरी मशीन पर (विन 7 होम प्रीमियम 64 बिट, एक्सेस 2000 स्थापित), ...:
ग्रेट समाधान; त्वरित सवाल क्या होता है यदि हम 32-बिट मशीन पर इसे चलाते हैं, तो वातावरण ("प्रोग्राम (FL86)" ("प्रोग्राम) (बस) रिक्त हो जाता है? क्षमा करें मेरे पास हाथ नहीं है। – James
मेरे पास एक आसान नहीं है, लेकिन वातावरण ("HELLO_WORLD") एक खाली स्ट्रिंग देता है, इसलिए मुझे लगता है कि आपको वही परिणाम मिल जाएगा यदि वह चर केवल x64 मशीनों पर उपयोग किया जाता है। वर्चुअल पीसी (और अन्य ओएस अनुकरणक) निःशुल्क हैं। यदि आपके पास x86 ओएस आसपास झूठ बोल रहा है, तो धूल को उड़ाएं, वर्चुअल वातावरण में स्थापित करें और देखें कि क्या होता है। :) – ray
इसके अलावा, मैंने अभी ईसाई के जवाब को देखा है और मुझे ध्यान रखना चाहिए कि मेरी मशीन पर, मुझे var "ProgramFiles" बनाम "प्रोग्राफाइल (X86)" के साथ अलग-अलग फ़ोल्डर्स मिलते हैं। आप शायद x64 फ़ोल्डर प्राप्त करने के लिए उसकी सिफारिश का उपयोग कर सबसे अच्छा होगा; और, यहां अनुमान लगाएं, यदि दोनों "प्रोग्राम (X86)" और "ProgramW6432" रिक्त मान लौटाते हैं, तो "प्रोग्रामफाइल" तब लागू होंगे। – ray
यहाँ एक लेख आपको दिखा रहा है कैसे रजिस्ट्री से इस जानकारी को पढ़ने के लिए:
उस लेख की टिप्पणी में भी एक संकेत है कि "ProgramFiles" वातावरण चर से जानकारी पुनः प्राप्त करने के लिए है । लेकिन सावधान रहें, यदि आपके पास अलग-अलग विभाजन हैं, तो एक से अधिक "प्रोग्राम फ़ाइलें" फ़ोल्डर हो सकते हैं, उदाहरण के लिए "C:\Program Files"
और "D:\Program Files"
।
ray023's answer मूल रूप से सही है, लेकिन एक अतिरिक्त उसी फ़ोल्डर को वापस करें, C:\Program Files (x86)
।
मेरे 64 बिट विंडोज़ पर "गैर-x86-folder" (C:\Program Files
) प्राप्त करने के लिए, मुझे Environ("ProgramW6432")
का उपयोग करने की आवश्यकता है।
Here's another linkEnviron
फ़ंक्शन के बारे में, कोड सहित सभी पर्यावरण चर सूचीबद्ध करने के लिए कोड (जिसमें मुझे ProgramW6432
मिला)।
संपादित करें:
जैसा कि मैंने पहले से ही एक टिप्पणी में कहा, मैं सिर्फ यह मेरे अन्य मशीन पर परीक्षण के रूप में परिणाम निर्भर करने के लिए न केवल ऑपरेटिंग सिस्टम पर है, लेकिन स्थापित एमएस ऑफ़िस पर लग रहे हैं संस्करण के रूप में अच्छी तरह से:
इस मशीन विन XP SP3 32 बिट पर चलता है, और एक्सेस 2000 स्थापित किया गया है:
Environ("ProgramFiles")
रिटर्न C:\Programme
।
(कि जर्मन में "प्रोग्राम फ़ाइलें" है - मैं जर्मनी में हूँ और मेरे Windows जर्मन में है)
Environ("PROGRAMFILES(X86)")
और Environ("ProgramW6432")
कोई रिक्त स्ट्रिंग लौट आते हैं।
-> इसलिए "x86 फ़ोल्डर" निर्धारित करने का सबसे सुरक्षित तरीका (Win XP या Win 7 पर कोई फर्क नहीं पड़ता) Environ("ProgramFiles")
लगता है।
मैं इसकी पुष्टि नहीं कर सकता; मुझे अपेक्षित परिणाम मिलते हैं? मैं कार्यालय के 64-बिट संस्करण का उपयोग कर रहा हूं, क्या मैं पुष्टि कर सकता हूं कि आप हैं, जैसा कि मुझे संदेह है कि आप नहीं हैं? हालांकि मदद करने के लिए धन्यवाद। – James
नहीं, मैं 32-बिट संस्करण (एक्सेस 2000, विशिष्ट होने के लिए उपयोग कर रहा हूं - यह इस मशीन पर स्थापित एमएस ऑफिस का एकमात्र हिस्सा है)। –
@ क्रिस्टियन स्पीच यह दिलचस्प है b/c मेरे पास 64 बिट शब्द है और मुझे प्रोग्रामफाइल बनाम प्रोग्राम प्रोग्राम (X86) का उपयोग करके अलग-अलग फ़ोल्डर्स मिलते हैं। मुझे आश्चर्य है कि अगर इस आदेश का उपयोग करते समय यह भूमिका निभाता है; उस बिंदु पर नहीं जहां मैं इसका परीक्षण करने के लिए समय लेना चाहता हूं, लेकिन जेम्स के लिए कुछ हो सकता है। : पी – ray
मैंने सोचा कि मैं इस चर्चा से निष्कर्षों का सारांश दूंगा।
किसी भी "प्रोग्राम फ़ाइल" से संबंधित वातावरण चर विंडोज (32 या 64 बिट) के साथ-साथ कार्यालय (32 या 64 बिट) के आधार पर इस प्रकार अलग-अलग होगा के लिए Environ
के उत्पादन:
Windows Office ProgramFiles PROGRAMFILES(X86) ProgramW6432
------- ------ ---------------------- --------------------- ----------------
32-bit 32-bit C:\Program Files [empty string] [empty string]
64-bit 32-bit C:\Program Files (x86) C:\Program Files (x86) C:\Program Files
64-bit 64-bit C:\Program Files C:\Program Files (x86) C:\Program Files
ध्यान दें कि विंडोज 64 बिट + ऑफिस 32 बिट सेटअप के लिए, Environ("ProgramFiles")
का आउटपुट विंडोज में ProgramFiles
पर्यावरण चर के वास्तविक मान के साथ मेल खाता है! कमांड प्रॉम्प्ट पर, echo %ProgramFiles%
C:\Program Files
देता है, C:\Program Files (x86)
नहीं।
आप (के लिए 64-बिट Windows के लिए 32-बिट विंडोज C:\Program Files
, और C:\Program Files (x86)
) 32 बिट प्रोग्राम फ़ाइलों फ़ोल्डर के लिए पथ की जरूरत है तो आप इस सुविधा का उपयोग कर सकते हैं:
Function Get32BitProgramFilesPath() As String
If Environ("ProgramW6432") = "" Then
'32 bit Windows
Get32BitProgramFilesPath = Environ("ProgramFiles")
Else
'64 bit Windows
Get32BitProgramFilesPath = Environ("ProgramFiles(x86)")
End If
End Function
- 1. प्रोग्राम फ़ाइलें फ़ोल्डर
- 2. प्रोग्राम आइकन प्राप्त करें
- 3. मेरे प्रोग्राम फ़ोल्डर
- 4. प्रोग्राम साइटमैटिक प्रोग्राम प्रोग्रामेटिक रूप से एक्सेस करें (साइटकोर 6)
- 5. प्रोग्राम g ++ पथ
- 6. कैसे प्रोग्राम के रूप में एक ASP.NET App_Data फ़ोल्डर पथ
- 7. जावा प्रोग्राम का नाम प्राप्त करें
- 8. Google ड्राइव एपीआई - फ़ोल्डर पथ प्राप्त करें
- 9. प्रोग्राम पर यूनिट टेस्ट जिसमें बहुत सारे मैक्रोज़
- 10. प्रोग्राम प्रोग्राम के रूप में माउस प्रोग्राम कैसे उत्पन्न करें?
- 11. ग्रहण प्रोग्राम
- 12. बूस्ट :: फाइल सिस्टम के साथ पूर्ण पथ प्राप्त करें :: पथ
- 13. प्रोग्राम Phonegap
- 14. जावा प्रोग्राम को संकलित करें ... जावा प्रोग्राम
- 15. एंड्रॉइड आरटीपी प्रोग्राम भेजें और प्राप्त करें
- 16. सी प्रोग्राम के ऑपकोड कैसे प्राप्त करें
- 17. प्रोग्राम
- 18. पूर्ण फ़ाइल पथ से फ़ोल्डर का नाम प्राप्त करें
- 19. डिफ़ॉल्ट प्रोग्राम
- 20. प्रोग्राम
- 21. पाइथन प्रोग्राम को पाइथन प्रोग्राम
- 22. प्रोग्राम
- 23. प्रोग्राम बाइनरी
- 24. प्रोग्राम
- 25. सी ++ प्रोग्राम
- 26. एक सी प्रोग्राम का एक अन्य सी प्रोग्राम
- 27. प्रोग्राम
- 28. प्रोग्राम
- 29. प्रोग्राम
- 30. Xcode में एक फ़ोल्डर प्रोग्राम बनाएं - उद्देश्य सी
आप 32 और 64 बंद बिट्स – rene
किसी विशेष ओएस पर? – rene
@rene: यह उस पर निर्भर करता है जिसका अर्थ है। 32 बिट विन XP पर, केवल एक "प्रोग्राम फ़ाइलें" फ़ोल्डर है। "प्रोग्राम फ़ाइलें (x86)" आमतौर पर केवल 64 बिट विंडोज़ के तहत उपलब्ध होती है। –