Remote Control을 하거나 Windows Service에 등록을 하거나 할 때 계정 설정 때문에 Access Denied가 종종 발생 한다.

이럴경우엔 계정앞에 도메인을 붙여서 로그인해보자.

가령 그룹 이름이 netgroup이면 netgroup\skyilover와 같이 붙여서 하는 것이다.

WMI를 사용해볼일이 있어서 로그인을 하는데 아무리해도 안되더라

알고보니 UserName에 해당 계정이 어디소속인지를 알려주는 것 까지 적어줘야지 하는것이였다..

요몇일세 이런 문제만 세네번 겪으면서 매번 한시간씩 까먹으니.. 시간이 아깝다
 Track this back : http://skyilover.ruree.net/soojung/trackback.php?blogid=365

Name   Email   Homepage
드디어 manifest가 뭐하는 녀석인지 알았다.

물론 모든 기능을 다 알아낸 것은 아니겠지만.. 아마도 많은 기능 들 중 하나인 dll링크와 관련된 부분을 이해했다.

xp에서는 메시지를 별로 못봤지만.. vista계열(vista~윈7,2008등)에서

프로그램이 실행이 안될때 Side-by-side가 어쩌고 저쩌고하면서 실행이 안될때가 있다.

대충 이전까지 해결해온 경험으론 필요한 dll이 없다는 것인데..(debug파일로 배포를 했다거나 재배포가능 패키지를 설치 안했다거나..)

평소 하던데로 재배포 가능 패키지(vcredist_x64와 같이 배포하는 인스톨파일)를 설치했는데도 계속해서 에러가 발생하더라..

분명 dll문제니까 참조하고있는 라이브러리들의 dll도 전부 release로 맞추고 하면 되려니 하고 했지만 역시 문제다.


그러다가 side-by-side가 정확히 뭔지 찾아보고... - side-by-side는 WinSxS(Windows Side by Side)라는 폴더에서 파일들을 참조해서 dll을 연결시켜준다는 것이다.

전에(vs2003이전버전?)는 dll이 이름만 같으면 무작정 가져다가 써서 공용 dll의 경우 버전이 업그레이드가 된다거나 해버리면 이전 버전을 쓰던 프로그램들은 죽어버리고.. 이런 문제들이 많았는데 이것을 해결하기위해서 vs2005부터 도입된 방식이라고 한다.

(어쩐지 WinSxS라는 폴더가 어느 날부터 생겼다했다...)

그리고 이 side-by-side는 manifest에 정의된 assembly에 의해서 버전이 맞춰져서 실행이 된다고한다.


일단 exe파일을 vs로 열어보았다.

RT_MANIFEST를 보니 assembly가 셋팅되어있고 옆에 버전이 보인다.
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50727.4053" processorArchitecture="amd64" 
publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
버전 8.0.50727.4053을 참조한다는 내용인 것이다.

이 버전을 참조하는건 WinSxS폴더에서 찾아서 참조시키니 WinSxS폴더를 뒤져보았다.

amd64_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4053_none_88e046c92fae6f57 폴더가 존재해야하는데 없는 것이다..

저 뒷자리 버전까지 반드시 똑같아야지만 dll을 연결 시키는것이다.

재배포 패키지도 버전이 여러가지(걍2005와 sp1이외에도..보안업데이트 관련해서 버전이 더 많이존재한다)가 있는데 그냥 아무거나 구해다 깔아서 해결이될 문제는 아닌 것이다...

저 버전으로 검색하니 MS에서 공지한 보안업데이트 관련된 article을 찾았다. 그리고 거기에 뒤져보니 재배포 패키지를 다운로드하라고 하더라.. (8.0.50727.4053 버전이라고 한다.)
관련 링크
http://support.microsoft.com/kb/973923
http://www.microsoft.com/downloads/details.aspx?displaylang=ko&FamilyID=766a6af7-ec73-40ff-b072-9112bab119c2
그걸 설치하니 제대로 실행이 되고, dll과의 전쟁은 끝은 났다.

원래 전에는 dll문제가 생기면 걍 귀찮아서 무조건 정적링크(lib파일을 이용한)를 해서 문제를 해결했다.

근데 그 정적링크도 전에 일 때문에 좀 고생하긴했지만..

이번엔 외부 팀에서 받은 dll들이 있어서 꼭 dll로 해야했기에 이러한 문제들을 해결해야했다.

외부 팀에서 받은 dll도 vs로 열면 RT_MANIFEST 파일 리소스들이 보이는데 여기에서 dll버전을 참고해서 재배포 버전을 설치하면 된다.

만약 dll들에서 참조하고있는 버전들이 다 틀리다면.. 이것저것 다 설치해야할 것이다. (아마도!)

참고 : http://microdev.pe.kr/69
 Track this back : http://skyilover.ruree.net/soojung/trackback.php?blogid=364
Commented by IRIS at 10/05/11 17:38
amd ㄷㄷㄷㄷ
릴리즈야 그렇다치고 디버그는 아무리 배포하려고 해도 안되더군요. (물론 VS깔면 다 해결됨)
그리고 SP1 패치해도 이놈들이 프로젝트를 만들때 매니페스트를 그냥 .0 버전으로 넣어버리는 버그 아닌 버그가 있죠 ㄷㄷ
Commented by IRIS at 10/05/11 17:43
아 요즘 게임들은 보니까 vcredist를 설치하지 않고 그냥 dll들만 exe랑 같이 넣어서 배포하더군요.
그게 속편함. 어차피 매번 패치되는 온라인 겜들이라 dll버전 바뀌면 다시 내려받으면 되고 ㅋㅋ
Commented by 치이 at 10/05/25 11:57
amd가 그 amd가 맞긴한데 여기선 그 amd가 아닌게죠 ㅎ
흠 같이 넣어서 배포하나요? 대게 설치하는것만 많이 봐서요 ㅌㅌㅌ
저희회사는 모든 게임이 다 설치하는거같던데;;

Name   Email   Homepage


http://skyilover.ruree.net 의 google map key
ABQIAAAAhiwNyY5uUIkwU9KHtRN2lxTAhh2likxGeeV65iXT0v5_if-6tRTBHzydnn5Y-CFGUJhvXAXiQxfceA

키는 로그인만 하면 맘데로 받을수 있는듯? 자세히 안봤으므로 패스..

http://code.google.com/intl/ko/apis/maps/signup.html
 Track this back : http://skyilover.ruree.net/soojung/trackback.php?blogid=363
Commented by IRIS at 10/04/29 21:39
응? 이거 API신청만 하면 데이터 받아올 수 있는 건가요..??
Commented by 치이 at 10/05/03 14:10
신청안해도 데이터는 받아올 수 있어요 ㅎ
인증하라는 귀찮은 메시지가 뜰 뿐..

Name   Email   Homepage


DB에서 오른쪽 클릭>태스크>스크립트 생성
 Track this back : http://skyilover.ruree.net/soojung/trackback.php?blogid=362
Commented by IRIS at 10/04/29 21:38
음.. 참 다양한 걸 하시는 군요~
Commented by 치이 at 10/05/03 14:09
DBA까지할 기세죠 [!?]

Name   Email   Homepage
http://secuprint.tistory.com/entry/vcredist-몰래설치

게임 인스톨러 만들 때

vcredist와 phyx를 몰래설치 하면 되려나..
 Track this back : http://skyilover.ruree.net/soojung/trackback.php?blogid=361

Name   Email   Homepage