În lucrările mele recente, vreau să fac un instrument mic pentru memento-urile clienților; Desigur, programul winform trebuie să citească fișierul de configurare al aceluiași director ca aplicația (nu fișierul exe.config);
Pentru a citi directorul unde se află aplicația curentă, m-am gândit imediat la System.Environment.CurrentDirectory pentru a obține directorul de lucru curent. Programul pare să funcționeze impecabil;
Când am venit la muncă a doua zi dimineață, a apărut: "Citește fișierul de configurare lipsă". Aplicația adaugă pornirea automată a bootului. Acest mesaj apare pentru a citi eșecul fișierului de configurare, verificând imediat dacă fișierul de configurare din directorul aplicației a fost șters singur. După ce am verificat, am constatat că fișierul era încă acolo, am ieșit din program și l-am rulat din nou
Tot bine, nu lipsește niciun profil de citire pop-up. Apoi să vezi dacă calea intrării de boot din registru nu este în directorul meu? Uitându-mă la fișierul de traseu, e în regulă. Ești puțin confuz? Mă deconectez de pe calculator și încerc să repornesc, tot apare și fișierul de configurare lipsește. Motivul pentru care nu se poate găsi drumul va fi abordat direct
MessageBox, programul rulează și descoperă că calea este într-adevăr această cale.
Adaugă codul MessageBox și continuă să pornești testul. Când am pornit, am descoperit că directorul curent care a apărut era C:\Windows\System32 și am rămas imediat nedumerit. M-am gândit, oare programul lui Lao Tzu a pornit până la system32? Verificând registrul și sysetm32 nu are aplicația mea. În final, m-am gândit că ar trebui să existe o problemă cu codul pentru a obține calea.
După teste repetate, s-a constatat că System.Environment.CurrentDirectory este într-adevăr pentru a obține directorul curent, dar dacă programul A apelează programul B, iar programul B folosește System.Environment.CurrentDirectory pentru a obține directorul. Atunci directorul obținut în programul B nu mai este directorul în care se află aplicația B; Devine directorul unde se află A. Nu este greu să găsești că directorul care apare când pornesc este C:\Windows\System32, deoarece programul de pornire automată este de asemenea chemat de un proces în Windows.
Prin urmare, dacă programul winform dorește să obțină directorul unde se află aplicația curentă, este mai bine să nu folosească System.Environment.CurrentDirectory. În schimb, este: Application.StartupPath Astfel, nu contează cine îl cheamă.
Cod de test:
Transferat din:Autentificarea cu hyperlink este vizibilă.
|