2008-08-03 36 views
15

मैं Visual Studio 2003 में एक सेटअप प्रोजेक्ट को बनाए रखने की कोशिश कर रहा हूं (हाँ, यह एक विरासत एप्लिकेशन है)। इस समय हमारे पास समस्या यह है कि हमें कंप्यूटर पर प्रत्येक उपयोगकर्ता के लिए HKCU पर रजिस्ट्री प्रविष्टियों को लिखने की आवश्यकता है। HKLM के बजाय उन्हें HKCU में होने की आवश्यकता है क्योंकि वे डिफ़ॉल्ट उपयोगकर्ता सेटिंग्स हैं, और वे प्रति उपयोगकर्ता बदलते हैं। मेरे लग रहा है किविजुअल स्टूडियो सेटअप प्रोजेक्ट - प्रति उपयोगकर्ता रजिस्ट्री सेटिंग्स

  1. यह संभव नहीं है
  2. यह कुछ संस्थापक करना चाहिए नहीं है, लेकिन कुछ आवेदन करना चाहिए (सब के बाद क्या होता है जब एक उपयोगकर्ता प्रोफ़ाइल के बाद बनाई गई है स्थापित ?)।
इसे ध्यान में रखते

, मैं अभी भी आवेदन में यथासंभव कम बदलना चाहते हैं, तो मेरे सवाल है, यह एक Visual Studio 2003 सेटअप परियोजना में प्रत्येक उपयोगकर्ता के लिए रजिस्ट्री प्रविष्टियाँ जोड़ने के लिए संभव है?

और पल में, परियोजना पांच रजिस्ट्री रूट कुंजी को सूचीबद्ध करता है (HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS, और उपयोगकर्ता/मशीन हाइव)। मैं वास्तव में उपयोगकर्ता रूट कुंजी के बारे में कुछ भी नहीं जानता, और उपयोगकर्ता/मशीन हाइव नहीं देखा है। क्या कोई मुझे बता सकता है कि वे क्या हैं? शायद वे ऊपर मेरी समस्या का समाधान कर सकते हैं।

+0

इस प्रश्न के लिए धन्यवाद –

उत्तर

5

पहले: के बाद नए उपयोगकर्ता प्रोफाइल बनाई गई हैं तो क्या होता है: हाँ, यह कुछ ऐसा है सटीक reson आपके द्वारा निर्दिष्ट के लिए आवेदन में अंतर्गत आता है है? निश्चित रूप से, यदि आप किसी डोमेन का उपयोग कर रहे हैं तो सृजन पर रजिस्ट्री में कुछ सामान रखना संभव है, लेकिन यह वास्तव में उपयोग का मामला नहीं है। आवेदन जांचना चाहिए कि क्या सीटिंग हैं और यदि नहीं तो डिफ़ॉल्ट सेटिंग्स का उपयोग करें।

कहा जा रहा है कि, अन्य उपयोगकर्ताओं को HKEY_USERS हाइव के माध्यम से बदलना संभव है।

मैं Visual Studio 2003 सेटअप परियोजना के साथ कोई अनुभव नहीं है, तो यहाँ (पूरी तरह से असंबद्ध) VBScript कोड का एक सा है कि केवल आपके एक विचार जहां देखने के लिए दे सकता है है:

const HKEY_USERS = &H80000003 
strComputer = "." 
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") 
strKeyPath = "" 
objReg.EnumKey HKEY_USERS, strKeyPath, arrSubKeys 
strKeyPath = "\Software\Microsoft\Windows\CurrentVersion\WinTrust\Trust Providers\Software Publishing" 
For Each subkey In arrSubKeys 
    objReg.SetDWORDValue HKEY_USERS, subkey & strKeyPath, "State", 146944 
Next 

(संहिता सौजन्य Jeroen Ritmeijer)

1

मैं एमएसडीएन पर इस प्रविष्टि के साथ अपने समाधान के लिए भाग्यशाली हूं (मुझे नहीं पता कि मैं इसे पहले कैसे नहीं ढूंढ पाया)।

उपयोगकर्ता/मशीन हाइव
उपकुंजियों और मूल्यों को इस छत्ता के तहत दर्ज की गई HKEY_CURRENT_USER हाइव के तहत स्थापित किया जाएगा जब कोई उपयोगकर्ता चुनता है "बस मुझे" या HKEY_USERS छत्ता या जब कोई उपयोगकर्ता "सभी" चुनता स्थापना के दौरान।

Registry Editor

5

मुझे लगता है कि आप इसे सभी उपयोगकर्ताओं के लिए सेट करना चाहते हैं, कि आप किसी प्रकार के साझा कंप्यूटर पर हैं, जो संभवतः किसी डोमेन के अंतर्गत चल रहा है?

यहाँ ड्रेगन

चलो कहते हैं कि जो और जेन नियमित रूप से कंप्यूटर पर लॉग इन करते हैं, तो वे एक 'रजिस्ट्रियों' होगा।

फिर आप अपना ऐप इंस्टॉल करेंगे, और इंस्टॉलर उनके लिए एचकेसीयू के तहत आइटम सेट करने के लिए विशाल हैक्स और घृणित चीजें नियोजित करेगा।

फिर, बॉब साथ आएगा और लॉग ऑन करेगा (वह, और 500 अन्य लोगों के पास डोमेन में खाते हैं और ऐसा भी कर सकते हैं)। उन्होंने पहले कभी इस कंप्यूटर का उपयोग नहीं किया है, इसलिए उनके पास कोई रजिस्ट्री नहीं है। पहली बार जब वह लॉग इन करता है, तो विंडोज़ उसे बनाता है, लेकिन उसके पास आपकी सेटिंग नहीं होगी।

आपका ऐप तब गिरता है या गलत तरीके से व्यवहार करता है, और बॉब रेनिक्सन से जुड़े उन क्रैपी उत्पादों के बारे में जोर से शिकायत करता है।

सही उत्तर केवल आपके ऐप में कुछ डिफ़ॉल्ट सेटिंग्स रखना है, जो उन्हें रजिस्ट्री में लिख सकते हैं यदि उन्हें नहीं मिलता है। यह सामान्य अच्छा अभ्यास है कि आपके ऐप को कभी भी रजिस्ट्री पर निर्भर नहीं होना चाहिए, और किसी भी रजिस्ट्री प्रविष्टि के लिए, केवल

1

MSDN article उपयोगकर्ता/मशीन हाइव के बारे में क्या कहता है इसके बावजूद, यह आवश्यकतानुसार चीजों को बनाना चाहिए, यह नहीं है HKEY_USERS को लिखें। इसके बजाय यदि आप हर किसी का चयन करते हैं तो आप एचकेसीयू को लिखते हैं यदि आप जस्ट मी और एचकेएलएम का चयन करते हैं।

तो मेरी समाधान उपयोगकर्ता/मशीन हाइव उपयोग करने के लिए होने जा रहा है, और फिर आवेदन में यह जाँच करता है, तो रजिस्ट्री प्रविष्टियाँ HKLM से प्रतियां उन्हें HKCU में और यदि नहीं कर रहे हैं। मुझे पता है कि यह संभवतः ऐसा करने का सबसे आदर्श तरीका नहीं है, लेकिन इसमें कम से कम बदलाव हैं।

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

  • कोई संबंधित समस्या नहीं^_^