'C#'에 해당되는 글 8건
- 2011.03.10 MEF의 등장 배경과 MEF에 대한 기초 소개
- 2010.07.06 ADO.NET의 데이터 동시성 소개
- 2010.01.13 Windows Install 파일 만들 때 주의사항.
- 2010.01.13 [C#]별도 bat 파일 필요없이 "신뢰할 수 있는 루트 인증기관"에 인증서 등록
- 2009.06.11 C#을 이용하여 메일 보내기.(파일첨부)
- 2009.05.25 FileSystemWatcher 클래스~(폴더감시)
- 2009.03.06 Reflection을 이용한 함수 호출스택 구하기(메소드)
- 2009.03.03 Environment Class 를 이용하여 현재 시스템 드라이브 가져오기
ADO.NET의 데이터 동시성 소개
Windows Install 파일 만들 때 주의사항.
참조 : http://msdn.microsoft.com/ko-kr/library/z5s1e2wh.aspx
.msi 파일을 만들 때
빌드는 문제없이 잘되지만 빌드 후 나온 msi 파일을 설치시
ActiveX 같은 경우는 문제가 없는데, 시스템 파일 같은 경우 오류가발생 하는 경우가 있다.
설치 도중 오류 발생 함.
등록할 파일의 속성 중
Regster - vsdrpDoNotRegister 선택 하면 레지스트리에등록 하지 않음.
regsvr32 명령어가 필요한 dll은 vsdrfCOMSeflReg 선택 하면 됨.
끝.
[C#]별도 bat 파일 필요없이 "신뢰할 수 있는 루트 인증기관"에 인증서 등록
참조 : http://sandeep-aparajit.blogspot.com/2008/04/how-to-execute-command-in-c.html
http://msdn.microsoft.com/ko-kr/library/e78byta0(VS.80).aspx
http://www.uvm.edu/~jgm/wordpress/?p=121
System.Diagnostics.ProcessStartInfo 를 이용하여 실행
인증서 등록하기 예제
인증서등록 도구인 certmgr.exe 와 인증서 hanjin.cer 필요 함.
class Program { static void Main(string[] args) { System.Diagnostics.ProcessStartInfo ps = new System.Diagnostics.ProcessStartInfo("cmd", "/c certmgr.exe -add hanjin.cer -c -s -r localMachine Root"); ps.RedirectStandardOutput = true; ps.UseShellExecute = false; ps.CreateNoWindow = true; System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo = ps; p.Start(); string result = p.StandardOutput.ReadToEnd(); Console.WriteLine(result); } |
인증서는 보안상. 업로드 불가.
끝.
FileSystemWatcher 클래스~(폴더감시)
폴더 감시 후 해당 폴더에서 변경(생성, 삭제, 이동 등)이 일어 났을 경우
해당 이벤트를 발생시킴
-- 예제 소스 --
static void Main(string[] args)
{
System.IO.FileSystemWatcher fsw = new System.IO.FileSystemWatcher();
fsw.Path = "C:/test";
fsw.EnableRaisingEvents = true;
fsw.Created += new System.IO.FileSystemEventHandler(fsw_Created);
Console.ReadKey();
}
static void fsw_Created(object sender, System.IO.FileSystemEventArgs e)
{
Console.WriteLine("파일 경로 : " + e.FullPath);
Console.WriteLine("만든 파일 : " + e.Name);
}
Reflection을 이용한 함수 호출스택 구하기(메소드)
A() -> B() ->C() 함수를 호출 했다고 가정 했을 때
C() 함수에서 A() 함수명을 구할 수 있다.
private void Defender4()
{
int count = new StackTrace().FrameCount; //현재의 호출스택 카운트
StackTrace stacktrace = new StackTrace();
MethodBase method = null;
for (int i = 0; i <count ; i++)
{
method= stacktrace.GetFrame(i).GetMethod(); //i 번째에 해당하는 호출스택 메소드 반환
Console.WriteLine("{0}번 째 호출스택 : {1}",i,method.Name);
}
Console.WriteLine();
}
로그 작성에서 사용 하면 좋을 듯 함..
Environment Class 를 이용하여 현재 시스템 드라이브 가져오기
참조 사이트 : http://msdn.microsoft.com/ko-kr/library/system.environment(VS.80).aspx
보통 환경 변수를 가져올 때
string str = Environment.GetEnvironmentVariable("환경변수명");
Console.WriteLine(str);
이런 식으로 가져오게 된다.
문장 속에 환경 변수가 들어 있다면 해당 값으로 치환해 주는 메소드가 있다.
String query = "%SystemDrive%";
str = Environment.ExpandEnvironmentVariables(query); //환경변수 여러개도 됨.
출력 값 : C:
파일의 경로를 저장 할 때 객체.Save("c:/파일명.확장자");
--> 환경 변수를 구해서 객체.Save(str + "/파일명.확장자");