मैंने सी # और विंडोज फॉर्म में एक स्क्रीन सेवर लिखा है। परीक्षण के लिए मैं आलसी हूं और बस मेरी सभी सेटिंग्स (अभी तक कोई सेटिंग संवाद नहीं) के लिए कॉन्फ़िगरेशन फ़ाइल का उपयोग किया है, लेकिन प्रोग्राम स्क्रीनसेवर चलाते समय कॉन्फ़िगरेशन फ़ाइल को खोजने या पढ़ने में असमर्थ लगता है।.Net स्क्रीनसेवर को कॉन्फ़िगरेशन फ़ाइल नहीं मिली
यह तब काम करता है जब मैं पूर्वावलोकन बटन का उपयोग करता हूं या मैन्युअल रूप से इसे किसी भी तरह से चलाता हूं, केवल तभी जब यह स्क्रीनसेवर टाइमआउट को हिट करता है कि यह कॉन्फ़िगरेशन फ़ाइल नहीं ढूंढ पा रहा है।
यह लोग इन AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
होने यह छोटा नाम देता है: C:\Windows\System32\MYSCRE~1.config
यह कहाँ C:\Windows\System32\MyScreenSaverName.scr.Config
होना चाहिए तो मेरा अनुमान है कि समस्या यह है कि यह छोटा नाम पथ के साथ कॉन्फ़िग फ़ाइल नहीं मिल सकता है।
यह सुनिश्चित नहीं है कि यह सिस्टम खाता के कारण है जो विंडोज 7 स्क्रीन सेवर को चलाता है, या यह कैसे चलाया जाता है इसके बारे में कुछ और। कोई भी जानकारी उपयोगी होगी, धन्यवाद।
संपादित करें: कोई अंतर को खोजने के लिए कोशिश कर रहा है:
- केवल अंतर मैं मिल सकती है कि
Environment.CommandLine
रिटर्नC:\Windows\system32\MYSCRE~1.SCR /s
जब विंडोज स्क्रीन सेवर चलाता है, लेकिन सामान्य मार्ग होता है जब मैं इसे चलाने - सब कुछ के तहत
Process.GetCurrentProcess().StartInfo
है एक ही WindowsIdentity.GetCurrent().Name
अपना खाता नाम है
अन्य प्रश्नों को देखते हुए, ऐसा लगता है कि उपयोगकर्ता 32 स्क्रीनसेवर शुरू करता है, इसलिए मुझे लगता है कि यह स्क्रैस प्रक्रिया शुरू करने के तरीके के बारे में कुछ होना चाहिए।
कार्य के आसपास: मेरी .scr फ़ाइल को 8 वर्ण या उससे कम रखने के लिए नामकरण करने से यह सही तरीके से काम करने की अनुमति देता है। तो अब यह काम करता है, फिर भी यह जानना अच्छा लगेगा कि यह समस्या क्यों मौजूद है।
मैं एक ही समस्या का सामना कर रहा हूँ। लेकिन कामकाज मेरे लिए भी काम करता है ... – Jan
क्योंकि स्क्रीनसेवर चलाने वाले कोड में अभी भी 8 अक्षर डीओएस/पुराने विंडोज़ की सीमा है? सी की तरह: \ Progra ~ \ तो यदि आप ऐपडोमेन को कॉल करते हैं और कॉन्फ़िगरेशन फ़ाइल को "a.config" में बदलते हैं तो यह फ़ाइल को 8 प्रतीकों से कम होने के बिना नामित किए बिना काम करेगा। पसंद: AppDomain.CurrentDomain.SetData ("APP_CONFIG_FILE", "c: \\ this_is_a_long_config_file.config"); नोट: यह एक जंगली अनुमान है इसलिए मैंने इसे एक टिप्पणी के रूप में जोड़ा और जवाब नहीं दिया। –