2011-10-18 16 views
8

मैंने सी # और विंडोज फॉर्म में एक स्क्रीन सेवर लिखा है। परीक्षण के लिए मैं आलसी हूं और बस मेरी सभी सेटिंग्स (अभी तक कोई सेटिंग संवाद नहीं) के लिए कॉन्फ़िगरेशन फ़ाइल का उपयोग किया है, लेकिन प्रोग्राम स्क्रीनसेवर चलाते समय कॉन्फ़िगरेशन फ़ाइल को खोजने या पढ़ने में असमर्थ लगता है।.Net स्क्रीनसेवर को कॉन्फ़िगरेशन फ़ाइल नहीं मिली

यह तब काम करता है जब मैं पूर्वावलोकन बटन का उपयोग करता हूं या मैन्युअल रूप से इसे किसी भी तरह से चलाता हूं, केवल तभी जब यह स्क्रीनसेवर टाइमआउट को हिट करता है कि यह कॉन्फ़िगरेशन फ़ाइल नहीं ढूंढ पा रहा है।

यह लोग इन AppDomain.CurrentDomain.SetupInformation.ConfigurationFile होने यह छोटा नाम देता है: C:\Windows\System32\MYSCRE~1.config यह कहाँ C:\Windows\System32\MyScreenSaverName.scr.Config

होना चाहिए तो मेरा अनुमान है कि समस्या यह है कि यह छोटा नाम पथ के साथ कॉन्फ़िग फ़ाइल नहीं मिल सकता है।

यह सुनिश्चित नहीं है कि यह सिस्टम खाता के कारण है जो विंडोज 7 स्क्रीन सेवर को चलाता है, या यह कैसे चलाया जाता है इसके बारे में कुछ और। कोई भी जानकारी उपयोगी होगी, धन्यवाद।

संपादित करें: कोई अंतर को खोजने के लिए कोशिश कर रहा है:

  1. केवल अंतर मैं मिल सकती है कि Environment.CommandLine रिटर्न C:\Windows\system32\MYSCRE~1.SCR /s जब विंडोज स्क्रीन सेवर चलाता है, लेकिन सामान्य मार्ग होता है जब मैं इसे चलाने
  2. सब कुछ के तहत Process.GetCurrentProcess().StartInfo है एक ही
  3. WindowsIdentity.GetCurrent().Name अपना खाता नाम है

अन्य प्रश्नों को देखते हुए, ऐसा लगता है कि उपयोगकर्ता 32 स्क्रीनसेवर शुरू करता है, इसलिए मुझे लगता है कि यह स्क्रैस प्रक्रिया शुरू करने के तरीके के बारे में कुछ होना चाहिए।

कार्य के आसपास: मेरी .scr फ़ाइल को 8 वर्ण या उससे कम रखने के लिए नामकरण करने से यह सही तरीके से काम करने की अनुमति देता है। तो अब यह काम करता है, फिर भी यह जानना अच्छा लगेगा कि यह समस्या क्यों मौजूद है।

+0

मैं एक ही समस्या का सामना कर रहा हूँ। लेकिन कामकाज मेरे लिए भी काम करता है ... – Jan

+2

क्योंकि स्क्रीनसेवर चलाने वाले कोड में अभी भी 8 अक्षर डीओएस/पुराने विंडोज़ की सीमा है? सी की तरह: \ Progra ~ \ तो यदि आप ऐपडोमेन को कॉल करते हैं और कॉन्फ़िगरेशन फ़ाइल को "a.config" में बदलते हैं तो यह फ़ाइल को 8 प्रतीकों से कम होने के बिना नामित किए बिना काम करेगा। पसंद: AppDomain.CurrentDomain.SetData ("APP_CONFIG_FILE", "c: \\ this_is_a_long_config_file.config"); नोट: यह एक जंगली अनुमान है इसलिए मैंने इसे एक टिप्पणी के रूप में जोड़ा और जवाब नहीं दिया। –

उत्तर

1

संपादित करें: ouch ... मैंने बहुत देर से देखा कि यह 1 साल पुराना सवाल है .... शायद कोई भी यह उपयोगी हो सकता है।


क्या आप सुनिश्चित हैं कि फाइल सिस्टम ntfs के बजाय वसा/fat32 नहीं है?

शायद यह एक पुरानी वसा/fat32 स्वरूपित प्रणाली से एक Win7 अपग्रेड किया गया है? (और इसलिए एफएस अपग्रेड नहीं किया गया था)?

शायद मैं गलत हूं, जगह पर छोटे नाम देखने का मेरा अनुमान है। मैंने हाल ही में सी # में एक स्क्रीनसेवर प्रोजेक्ट पर काम किया और मुझे कोई समस्या नहीं आई ... मुझे ईमानदार होने के बाद से छोटे नाम नहीं दिख रहे हैं ...

आपको डिस्क प्रबंधन से एफएस प्रकार देखना चाहिए। कुछ शोध मैं भी यह मिल गया कर, देखें कि क्या FUTIL.EXE मदद कर सकते हैं, वहाँ एक जिज्ञासु "disable8dot3" विकल्प सही है:

http://commandwindows.com/fsutil.htm

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