Thinking In Java
Thinking In C++
Writing Solid Code
Code Complete
The Pragmatic Programmer
Kent Beck의 Extreme Programming Explained
Jim Highsmith의 Agile Software Development Ecosystem
UML Distilled
Applying UML and Patterns
Design Patterns
3. 윈도우 시작시 레지스트리를 이용하여 실행될 때 레지스트리 경로는 이 블로그의 다른 포스팅에 나와있다.
윈도우가 시작될 때 레지스트리를 통해 실행되는 경우 결과값이 다른 것을 알 수 있다.
Application.ExecutablePath : C:\StartTest.exe Application.StartupPath : C:\ System.IO.Directory.GetCurrentDirectory() : C:\Documents and Settings\Admin Environment.CurrentDirectory : C:\Documents and Settings\Admin
봐서 알겠지만 뭔가 다르다는 것을 알 수 있다(참고로 Admin은 내 계정명이다).
솔직히 이유는 잘 모르겠다. 마음속에 짐작이 가는게 몇개 있긴 하나 잘 알지도 못하면서 공개적인 곳에 사실인냥 써놓을 수는 없으므로, 이유에 대해선 설명하진 않겠다 혹시 아는 분이 계시다면 댓글이나 방명록에 남겨놔서(even though secretly!) 알려주면 정말 고맙겠다.
따라서 C# 프로그램 내에서 프로그램이 속해있는 폴더 경로를 받아오려면 Application을 위주로 사용하는 것이 좋을 듯 싶다(게다가 파일 이름을 붙였다 떼었다 할 수도 있다!).
ps. 한가지 안타까운 점은 Application은 System.Windows.Forms를 이용하므로 콘솔에서는 아마 못쓸 것이다(따라서 콘솔에선 모르겠다-_-).
%% 네줄요약 %% C#으로 코딩할 때 프로그램 경로가 필요한데, 하필 그 때가 윈도우 시작이라면 Application.___Path 위주로 사용하는 것이 좋다(중간중간에 받아오는 경우라면 아마 문제없을것이다). 이게 싫으면 시작프로그램에 shortcut을 넣던가 절대경로로 하던가 실행시켜주는 넘을 만들어라. 만약 윈폼이 아닌 콘솔이라면 니 앞가림은 니가 알아서해라-_-
1. 확장자를 제외한 프로세스 이름 가져오기 System.Diagnostics.Process currentProcess = System.Diagnostics.Process.GetCurrentProcess(); String s = currentProcess.ProcessName;
2. 현재 실행되고 있는 프로그램 디렉토리 String strFolder = System.IO.Directory.GetCurrentDirectory();