2010-03-29 9 views
7

क्वेरी मैंने कोशिश की: ExpandEnvironmentStrings("%COMMONPROGRAMFILES%"), GetSpecialPath(CSIDL_PROGRAM_FILES_COMMON)WOW64: 32 बिट प्रक्रिया से x64% CommonProgramFiles% प्राप्त करें

मेरे 32-बिट ऐप से (आमतौर पर) c:\\Program Files (x86)\\Common Files सभी संकल्प। मुझे 64-बिट अनुप्रयोग के c:\\Program Files\\Common Files के तहत स्थापित एक फ़ाइल संस्करण (आमतौर पर) की जांच करने की आवश्यकता है।

उत्तर

15

64-बिट ऑपरेटिंग सिस्टम पर, ProgramW6432 पर्यावरण ग चर अंक: \ Program Files।

  • ProgramFiles => c: \ प्रोग्राम फ़ाइलें (x86)
  • ProgramFiles (x86) => c: Windows के एक अंग्रेजी संस्करण पर एक 32-बिट अनुप्रयोग के लिए पूरी सूची \ प्रोग्राम फ़ाइलें (x86)
  • ProgramW6432 => c: \ प्रोग्राम फ़ाइलें
  • CommonProgramFiles => c: \ प्रोग्राम फ़ाइलें (x86) \ आम फ़ाइलें
  • CommonProgramFiles (x86) => c: \ प्रोग्राम फ़ाइलें (x86) \ आम फ़ाइलें
  • CommonProgramW6432 => सी: \ प्रोग्राम फ़ाइलें \ सामान्य फ़ाइलें

बस एक अनुस्मारक: उस फ़ोल्डर में 32-बिट प्रोग्राम में रुचि के कुछ भी नहीं होना चाहिए। तकनीकी तौर पर। फ़ाइल सिस्टम पुनर्निर्देशक से सावधान रहें, यह सी: \ प्रोग्राम फ़ाइलों से c: \ प्रोग्राम फ़ाइलों (x86) में फ़ाइल अनुरोधों को पुनर्निर्देशित करेगा। यदि आप वास्तव में उस निर्देशिका में फ़ाइलों तक पहुंच बनाना चाहते हैं तो आपको Wow64DisableWow64FsRedirection() का उपयोग करना होगा।

+0

मैं सिर्फ यह जांच रहा हूं कि एक आवश्यक (64 बिट) एप्लिकेशन पहले से स्थापित है। – peterchen

-1
static string ProgramFilesx86() 
     { 
      if (8 == IntPtr.Size 
       || (!String.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432")))) 
      { 
       return Environment.GetEnvironmentVariable("ProgramFiles(x86)"); 
      } 

      return Environment.GetEnvironmentVariable("ProgramFiles"); 
     } 

क्या आपको इसकी आवश्यकता है?

+0

यह सुनिश्चित नहीं है कि C++ की तरह दिखता है। शायद सी ++/सीएलआई लेकिन मैं अनुमान लगाया सी # शर्त लगाऊंगा। –

+0

मैं शपथ ले सकता था मैंने टैग पर सी # देखा। माफ़ कीजिये। –

5

% CommonProgramW6432%

+0

धन्यवाद! किसी भी तरह से मैं env चर की सूची में चूक गया। – peterchen