티스토리 뷰
와....
진짜 이거 할려고 얼마나 뻘짓을 많이 했던가 -.-;;
국내에 있는 수 많은 게시글을 다 뒤지고 다녀도 찾을 수가 없어서 직접 알아냈다.
우선 링크는
http://msdn.microsoft.com/en-us/library/aa384006(v=VS.85).aspx
여기..
문제가 뭐냐면
비스타에서 사용자 계정 컨트롤러(UAC라고 해서 User Account Control..)를 사용하여 보안모드 상태일 경우 프로그램 실행하는것 조차 까다롭게 된다. 프로그램 배포시에 사용자에게 'UAC를 풀고 사용해라!'라고 하면 참 좋겠지만 그게 어디 쉽나..
여튼..
UAC가 활성화 된 상태에서 내가 만든 프로그램을 섣불리 Start Up(시작 프로그램)에 등록할려고 하면 Windows Defender가 우리의 프로그램을 차단해 버린다. 아하하하... 그럼 사용자에게 풀라고 하면 될 것 아닌가 -_-?? 라고 하면 웃기고..
여튼..
VISTA이후 버전 부터는 작업 스케쥴러 버전이 2.0으로 강화되어서 이것 저것 기능을 많이 지원한다.
Task Scheduler 2.0이라고 해서..
여기다가 '사용자가 로그인 할 때'마다 '프로그램을 실행'하도록 등록해주면 된다.
처음에 이걸 어떻게 하냐.. 생각해서 xml작성하고 vs c++로 코딩해보고 뻘짓을 참 많이 했는데
아주 간단히 커맨드로 해결 되더라..
cmd를 run as administrator로 실행해서
schtasks /create /sc onlogon /tn 태스크이름 /rl highest /tr 실행 경로
입력해 주면 된다.. 결국 프로그램에서 위의 커맨드를 실행하도록 하면 된다는거..(물론 프로그램도 어드민 권한으로 실행해야겠죠)
아주 쉽다..
중요한 포인트는 '/rl highest'이다. 최상위 권한으로 실행한다는 얘기이다.. 이거 안해주면 또 다시 windows defender에 막히겠지용 ~_~
그리고 또 발견된 문제는 실행 경로에 띄어쓰기가 들어갈 경우 에러 난다는 것이다. 이건 뭐 알아서 처리하고.. program files의 경우는 progra~1로 매크로 돼있으니까 글케 하면 된다.
음.. 모를거 같아서 알려드리자면 vs6.0에서 해당 경로에다가 파일 넣고 '맨처음'컴파일 할려 그러면 '~~~~경로에 있는걸 컴파일 하시겠습니까?'라고 물어본다. 그때 이름 긴거나 띄어쓰기 돼있는 넘들은 다 매크로 처리돼서 나온다. 그 경로 그대로 사용하면 된다.. 이거 말고 알아내는 다른 방법 아는 분은 코멘트좀..
즉 우리 회사 프로그램의 경우
schtasks /create /sc onlogon /tn tdigi /rl highest /tr "c:\progra~1\digitech\digitouch\digitouch.exe"
이렇게 해서 등록했다.
이 방법 말고도 service등록해서 시작 프로그램 띄우는 방법이 있다고도 하는데.. 그 방법은 gui프로그램의 경우 자동 시작되지 않는다고 한다..
한번 테스트 해보고 싶으면
system("schtasks /create /sc onlogon /tn tdigi /rl highest /tr notepad.exe");
를 프로그램에 추가해보시길.. (근데 이거 추가하면 v3가 바이러스로 잡네요 -_-? 어쩌자는거지..)
그럼 모두 삽질하지 않기를 바라며.. 오늘도 수고~
--------------------------------------------------------------------------------------------------
라고 데브피아에 글을 썼다가 까였다 -_-;; 까인 코멘트는..
짱이긴 뭐가 짱이라는건지?
클라이언트 환경은 제각각이란거 모르시나요?
schtasks.exe없거나 Path지정 안되어 있으면 당장에 실패할 코드 -_-;
그리고 서비스를 하나 만들 경우 GUI App를 로드해주도록 만들어주면 되는거구요.
또한 틸드 문자같은 경우 GetLongPathName()등으로 해결하면 깔끔해지죠.
결국 run as administrator로 띄울거라면 UAC를 회피하는 것도 아닌데다가
Windows Defender를 뚫었다는것 역시 어불성설입니다 -_-;
제목과 내용이 전혀 매칭되지 않네요.
schtasks.exe를 사용하는거라면 MSDN까지 갈 것도 없습니다.
링크도우미 : ms-its:C:\WINDOWS\Help\ntcmds.chm::/schtasks.htm
라고...ㅠㅠ... 감사요.. GUI app를 공부해야겠다..
'Development > Windows' 카테고리의 다른 글
MFC Dialog내에서 Control의 위치 구하기 (2) | 2010.07.09 |
---|---|
Visual C++ 시리얼 통신(RS-232) 강좌 (2) (5) | 2010.04.29 |
Visual C++ 시리얼 통신(RS-232) 강좌 (1) (23) | 2010.04.29 |
MFC로 짠 프로그램 배포하기 (0) | 2010.04.27 |
응용 프로그램 권한상승하기 (2) | 2010.04.07 |
비스타 권한 상승 매니페스트 추가 방식들 (3) | 2010.04.07 |
Thread 생성에 대한 간략한 코드 이것저것 모음 (0) | 2009.02.10 |
휠 메세지(WM_MOUSEWHEEL)가 안돼요 (0) | 2009.01.06 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- database
- API
- jni강좌
- source
- it
- 안드로이드
- 프로그래밍
- Python
- kering
- C
- android
- C++
- NDK
- Cloud
- java
- AWS
- driver
- winapi
- 드라이버
- 리눅스
- Visual C++
- Troubleshooting
- gcc
- jni
- 음악
- linux
- db
- algorithm
- MFC
- Quiz
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함