▣ [Vista] Admin 권한으로 실행되는 프로그램 만들기 (VB6)
==> 이 글을 작성할 때의 개발 환경은 Windows XP(SP2) + VB6 이었습니다.
그런데 이 방법대로 Vista + VB6 개발 환경에서 컴파일 하고 실행해보니 에러가 발생하더군요.

이렇게 컴파일된 실행 파일은 Vista 뿐만 아니라 XP에서 실행시켜도 에러가 발생합니다.
Vista + VB6 + RC.EXE + VB 리소스 편집기 ... 뭔가 문제가 있는 듯 한데 추가적인 테스트는 시간 관계상 다음으로 미룹니다. ^^
▣ 이 글에서는 Vista + VB6 개발 환경에서 위 에러를 피할 수 있는 두 가지 방법을 설명합니다.
[1] manifest 정보를 별도 파일로 관리.
manifest 정보는 실행 파일에 리소스로 포함시키지 않더라도 다음의 명명 규칙에 따라 실행 파일과 같은 폴더에 텍스트 파일로 넣어두기만해도 적용됩니다.
실행 파일(확장자 포함)명 + ".manifest"
예를들어 실행 파일명이 vb_amdin.exe인 경우 vb_admin.exe.manifest 이름으로 저장하면 됩니다.
요즘들어 Vista와 호환되는 유틸리티가 배포되고 있는데 일부 프로그램에서는 위 방법을 이용하고 있습니다. (Ex. Total Commander 7)
[2] VB2005의 mt.exe 사용
이전 글에서 mt.exe를 이용하는 방법에 대해서도 언급했었는데, 이 방법을 이용하는 경우에는 문제가 발생하지 않았습니다.
mt -manifest app_name.exe.manifest -outputresource:app_name.exe;#1
manifest 정보를 리소스로 포함시켜서 배포하겠다면 이 방법을 이용하면 됩니다.
▷ 개발 및 테스트하는 경우, 컴파일 할 때마다 매번 mt.exe를 실행하는 것은 귀찮은 작업이 될테니 컴파일하는 폴더에 manifest 파일을 저장해두면 좀 더 수월하게 진행할 수 있을겁니다.
(간단한 예제 소스와 함께 mt.exe 실행 파일이 있습니다.)
▣ 첨부파일 설명
▷ 압축을 풀면 루트에 프로젝트 소스와 함께 Manifest, mt 2개의 폴더가 있습니다.
▷ Manifest
- Vista에서 열어보면 방패 표시가 있는데, 이것은 같은 폴더에 있는 manifest 파일 때문입니다.
- manifest 파일을 삭제하고 실행하면 일반 사용자 권한으로 실행됨을 확인할 수 있습니다.
▷ mt
- Vista에서 열어보면 방패 표시가 있는데, 이것은 mt.exe를 이용해서 minifest 정보를 포함했기 때문입니다.
- manifest 파일을 삭제하고 실행하더라도 Admin 권한으로 실행됩니다.
☞ 본문 출처 : http://www.enjoydev.com/blog/118

☞ 본인의 글 입니다. 이 글을 다른 곳에 게재하는 경우 본문 출처를 밝혀주시기 바랍니다.
☞ 잘못된 내용이 있는 경우 지적 바랍니다.
트랙백 주소 :: http://www.enjoydev.com/blog/trackback/118
-
Subject: [Vista] Admin 권한으로 실행되는 프로그램 만들기 (VB6) - #2
Tracked from 경제적 자유와 은퇴를 향한 여정 2007/12/12 20:50 삭제▣ [Vista] Admin 권한으로 실행되는 프로그램 만들기 (VB6)== 이 글을 작성할 때의 개발 환경은 Windows XP(SP2) + VB6 이었습니다.그런데 이 방법대로 Vista + VB6 개발 환경에서 컴파일 하고 실행해보니 에러가 발생하더군요. 이렇게 컴파일된 실행 파일은 Vista 뿐만 아니라 XP에서 실행시켜도 에러가 발생합니다.V
vb_vista_exe_admin2.zip
댓글을 달아 주세요
여기에 있는글 정말 잘 읽었습니다. 도움이 많이 되었구요.
방화벽에 예외 포트를추가 하려고 했습니다. 하지만 잘 처리 되지 않았습니다
환경은 다음과 같습니다.
Vista, VB6,
제공해주신 부분에 다음항목만 추가해서 TEST를 진행했습니다.
Private Sub Command2_Click()
Dim Returns As Long
Returns = ShellExecute(Me.hwnd, "open", "netsh", " firewall add portopening TCP 9100 RAW", 0&, 0)
If Returns > 32 Then
MsgBox "결과값: " & CStr(Returns) + vbCrLf + "방화벽에 RAW포트를 예외 항목에 등록했습니다.", vbOKOnly + vbInformation, "예외포트등록완료"
Else
MsgBox "결과값: " & CStr(Returns) + vbCrLf + "예외 포트 등록 에러 " + vbCrLf + "방화벽에 RAW포트를 예외 항목에 등록하지 못했습니다.", vbOKOnly + vbExclamation, "예외포트등록 에러"
End If
End Sub
하지만 여전히 처리가 안되네요.
왜 그런지 ?????
해결이 되었습니다.
vista 방화벽의 예외처리는 다음의 문서를 참조하시기 바랍니다.
http://support.microsoft.com/kb/947709
비베따위의 운영자 이동범님의 도움이 있었습니다.
많은 관심 가져 주심 다시한번 감사 드립니다.
질문이 있는데요..
윈7에서는 안되나요.. xp / v6 에서 리소스 적용하고 컴파일 하여
윈7에서 실행하면
응용 프로그램의 side-by-side 구성이 잘못되어 응용 프로그램을 시작하지 못했습니다. 자세한 내용은 응용 프로그램 이벤트 로그를 참조하거나 명령줄 sxstrace.exe 도구를 사용하십시오.
위와 같은 오류가 나오는데요..