2012-01-07 30 views
10

मेरा प्रोग्राम इस पर आधारित है कि कार्यक्रम पहली बार चल रहा है या नहीं। आदेश अगर कार्यक्रम पहली बार के लिए चल रहा है निर्धारित करने के लिए मैं वर्तमान में एकमैं कैसे जांच सकता हूं कि कोई प्रोग्राम पहली बार चल रहा है या नहीं?

//this boolean exists within my programs settings 
Setting boolean FirstRun = True; 

उपयोग कर रहा हूँ प्रोग्राम यह एक तरीका है कि कि bool मूल्य के राज्य की जाँच करता है और उसके अनुसार कार्य करता है कॉल चलता है:

if(Properties.Settings.FirstRun == true) 
{ lblGreetings.Text = "Welcome New User"; 
    //Change the value since the program has run once now 
    Properties.Settings.FirstRun = false; 
    Properties.Settings.Save(); } 
else 
{ lblGreetings.Text = "Welcome Back User"; } 

ऐसा लगता है कि यह बहुत प्रभावी ढंग से काम करता है, हालांकि यदि .exe फ़ाइल को स्थानांतरित किया गया है और एक नए स्थान से लॉन्च किया गया है, तो यह इसे पहला रन मानता है, और मुझे चिंता है कि मैं इसे एक गन्दा फैशन में कर रहा हूं और शायद वहां मौजूद है पहले कार्यक्रम चलाने के लिए परीक्षण करने के लिए और अधिक कुशल तरीका। क्या ऐसा करने के लिए इससे अच्छा तरीका है?

+0

इसे आज़माएं: http://stackoverflow.com/questions/622108/check-condition-if-the-appliation-is-running-for-the-first-time-after-being-inst –

+0

आपको एक मिल सकता है अगर आप जानना चाहते हैं कि आपको क्यों अधिक जानकारी मिलती है तो बेहतर जवाब दें। उदाहरण के लिए, यदि आपको उपयोगकर्ता को पहले प्रश्नों पर कुछ प्रश्न पूछने की आवश्यकता है और आप उन उत्तरों को संग्रहीत करते हैं, तो प्रश्न उन उत्तरों को कहां स्टोर करने के लिए कम करेगा। इसके अलावा, "पहली बार" संदिग्ध है - इस उपयोगकर्ता द्वारा पहली बार? इस मशीन पर पहली बार? जितना अधिक विवरण आप देते हैं, उतना बेहतर जवाब आपको मिलेगा। –

+0

आप उपयोगकर्ता को अपना आवेदन क्यों ले जाने की उम्मीद करेंगे? – svick

उत्तर

8

लगता है कि आपकी समस्या वास्तव में है कि यदि आप ही पीसी पर किसी अन्य स्थान/फ़ोल्डर में executable ले जाते हैं, यह किसी भी तरह खो देता है इस तथ्य था कि यह पहले से ही कम से कम एक बार चलाने के बारे में जानकारी है।

का उपयोग करके, Properties.Settings.Default.FirstRun पर आपकी समस्या का समाधान करना चाहिए।

कुछ इस तरह, एक स्यूडोकोड:

if(Properties.Settings.Default.FirstRun == true) 
{ lblGreetings.Text = "Welcome New User"; 
    //Change the value since the program has run once now 
    Properties.Settings.Default.FirstRun = false; 
    Properties.Settings.Default.Save(); } 
else 
{ lblGreetings.Text = "Welcome Back User"; } 

देखो पर this नमूना है कि अधिक विस्तृत ढंग से कैसे प्राप्त करने के लिए।

+0

इस प्रकार मेरा कोड वास्तव में है। मैं क्षमा चाहता हूं कि मैं इसे इस तरह टाइप करना भूल गया। खुशी है कि आप जिस तरीके से इसका उपयोग करते हैं उसकी सिफारिश कर रहे हैं। –

6

चूंकि आपका प्रश्न एप्लिकेशन लॉन्च करने वाले प्रत्येक उपयोगकर्ता के बारे में चिंतित प्रतीत होता है, तो आपको एक प्रति उपयोगकर्ता समाधान तैयार करना चाहिए।

गुणों का उपयोग करना। सेटिंग्स वास्तव में काम करेंगे और जब तक प्रश्न में सेटिंग उपयोगकर्ता-विशिष्ट है तब तक कुशल रहेंगी।

हालांकि, यदि यह आपके आवेदन के लिए वांछित या उपयुक्त नहीं है, तो आप रजिस्ट्री में उपयोगकर्ता-विशिष्ट प्रविष्टि भी लिख सकते हैं।

उदाहरण के लिए:

 const string REGISTRY_KEY = @"HKEY_CURRENT_USER\MyApplication"; 
     const string REGISTY_VALUE = "FirstRun"; 
     if (Convert.ToInt32(Microsoft.Win32.Registry.GetValue(REGISTRY_KEY, REGISTY_VALUE, 0)) == 0) 
     { 
      lblGreetings.Text = "Welcome New User"; 
      //Change the value since the program has run once now 
      Microsoft.Win32.Registry.SetValue(REGISTRY_KEY, REGISTY_VALUE, 1, Microsoft.Win32.RegistryValueKind.DWord); 
     } 
     else 
     { 
      lblGreetings.Text = "Welcome Back User"; 
     } 
+0

क्या रजिस्ट्री कुंजी NULL पर रीसेट हो जाएगी या जब आप ऐप को अनइंस्टॉल करते हैं तो कुछ समान होगा? – Ashwin

+0

@NeoWin: नहीं, आपको इस काम को करने या अपनी पसंद के इंस्टॉलर में इसे लागू करने के लिए एक नेट इंस्टॉलर क्लास जोड़ने की आवश्यकता होगी। –

2

अनुमान लगाना क्या गंदा है अगर आप पोस्ट या यह वर्णन नहीं करते मुश्किल। "ExePath" नामक सेटिंग रखने का एक स्पष्ट दृष्टिकोण है। यदि आपको शून्य या स्ट्रिंग मिलती है जो विधानसभा से मेल नहीं खाती है। GETEntryAssembly()। स्थान तो यह या तो बस स्थापित या स्थानांतरित हो गया।

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

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