2009-03-17 2 views
3

Windows Vista에 표준 사용자로 설치해야하는 VB6 응용 프로그램이 있습니다. Visual Studio 2005를 사용하여 표준 사용자 안전한 장소 또는 폴더에 응용 프로그램을 배치 할 설치 프로젝트를 만들었습니다. 또한 사용자 응용 프로그램 데이터 폴더에 설치하고 등록 할 DLL이 있습니다. VS'05에서 내 Windows Installer를 만든 후에 msiinfo.exe를 사용하여 단어 수 등록 정보를 3 번째 비트로 뒤집어서 msi를 실행할 때 Vista에서 관리자 자격 증명을 표시하지 않도록합니다. 응용 프로그램은 dll을 사용자 응용 프로그램 데이터 폴더에 등록하려고 시도 할 때까지 아무런 문제없이 설치됩니다. 이 지점에 도달하면 dll에 대한 형식 라이브러리를 등록 할 수 없다는 오류가 발생합니다. 설치 프로그램에 사용자 폴더에 DLL을 등록 할 수있는 권한이없는 것 같습니다. 이 올바른지? 필자는 Vista가 시스템의 모든 사용자에게 영향을 미치는 항목을 업데이트하거나 변경하는 표준 사용자에 대해서만 불만을 나타 냈습니다. 어떤 아이디어? 생각? 제안?VB6을 표준 사용자로 Windows Vista에 설치

+0

"regfreecom"에 태그를 추가하는 자유를 얻었습니다. 문제의 정답이 될 것 같아요. 나는 스티븐이 아직 시도하지 않았기 때문에 조금 일찍 일어날지도 모른다는 것을 깨닫는다. – MarkJ

+0

@ 마크 J : 나는 정답이 될 것이라고 생각하는 것에 태그를 달아서는 안된다. 이것은 무엇을위한 태그가 아니며, 이것이 답을위한 것입니다. Reg-free COM은 .NET 어셈블리에서 COM 참조에만 작동하는 것으로 보입니다. – Tomalak

+0

@Tomalak. 의견에 감사드립니다. 실제로 reg-free COM은 VB6 클라이언트에서 사용 된 COM 참조와도 작동합니다. 예를 들어 MakeMyManifest 도구는 VB6 클라이언트에서만 작동합니다. 또는 내 대답에 언급 된 기사를 읽어보십시오. – MarkJ

답변

4

을 스티브

내 제안은 가능한 경우, 기본 사용자 계정하에 실제 작업이 있다고 언급 한 ocx/dll 파일을 등록하는 대신 regfree com/manifest 파일을 사용할 수 있다는 것입니다.

당신은뿐만 아니라 당신을 위해 여기 매니페스트를 작성하는 데 사용할 수있는 훌륭한 무료 응용 프로그램입니다 : http://mmm4vb6.atom5.com/

우리는 문제없이 지금 몇 년 동안이 사용하고있다가.

편집 MMM 웹 사이트가 다운되었습니다. 작성자가 자신의 호스팅에 문제가있는 here을보고 내 위치 확인을위한 다른 위치를 제공했습니다 - download it here.

+0

안녕하세요, Steve는 MMM에 대한 몇 가지 문제를 겪고 있습니다.이 질문은 다른 대답으로 기록되어 있습니다. 어쩌면 당신이 들러서 그 경험을 토대로 어떤 통찰력을 가지고 있는지 볼 수있는 시간이 있다면, 그는 그가 감사 할 것이라고 생각합니다. 건배. – MarkJ

-1

DLL 등록은 모든 사용자에게 영향을 미치며 (DLL은 전역으로 등록 됨) 관리자 권한이 필요합니다. 그 주위에 방법이 없습니다.

최신 프로그래밍 환경을위한 솔루션은 DLL을 등록 할 필요가 없다는 것입니다. 그러나 vb6는 COM에 의존하기 때문에 운이 좋지 않을 것입니다.

+0

운이 좋지는 않습니다 ... 실제로 무료 COM을 등록하는 것입니다. . 다른 답변과 마찬가지로 – MarkJ

+0

이 MSDN 항목에 설명 된대로 COM은 컴퓨터 전체의 HKEY_Classes_Root를보기 전에 HKEY_Current_User \ Software \ Classes를 찾습니다. http://msdn.microsoft.com/en-us/library/ms693350%28VS.85%29.aspx – dthrasher

1

일반적으로 나는 그의 대답에서 Joel Coehoorn이 말하는 것에 동의합니다.

그러나이 점에서 레지스트리가 어떻게 작동하는지 알면 수동으로 DLL을 HKEY_CURRENT_USER\SOFTWARE\Classes에 수동으로 등록하려고 제안 할 수 있습니다. 기본적으로 regsvr32.exe는 HKEY_LOCAL_MACHINE\SOFTWARE\Classes을 반복합니다.

해킹 비트이며 작동하지 않을 수도 있지만 시도해 볼 수는 있습니다.

+0

HKLM이 아닌 HKLU에 dll을 등록하는 것에 대한 귀하의 의견과 관련하여 필자는이를 시도했다. orca를 사용하여 msi를 편집하면 레지스트리 항목 루트 컬럼을 1로 설정했습니다.이 작업을 수행하면 msi가 얼음 유효성 검사에 실패합니다. 나는 xml manifest에 시도를 줄 것이라고 생각한다. –

+0

reg 무료 COM을 사용하는 것을 강력히 권고한다. 꽤 익숙하다. iffy IMHO – MarkJ

+0

내가 말했듯이 - 해킹이 약간 있지만 시도할만한 가치가있다. – Tomalak

4

대신 직접 DLL 파일을 수행 할 수 있습니다 등록 RegFree COM을 사용하십시오.

이 경우 응용 프로그램의 XML 매니페스트 파일이 만들어 지므로 시스템 레지스트리를 사용하는 대신 응용 프로그램 폴더에서 DLL 파일을 찾습니다.

이것은 설치 프로그램이 DLL을 등록하지 않아도 앱이 제대로 실행됨을 의미합니다.

이러한 링크는 더 많은 정보를 가지고 :

http://msdn.microsoft.com/en-us/magazine/cc188708.aspx

http://www.devx.com/vb/Article/32888/1954

당신은 무료로 당신이 필요로하는 매니페스트 파일을 만들 내 매니페스트 소프트웨어를 확인 사용할 수 있습니다

http://mmm4vb6.atom5.com/

+0

+1 UR 답안을 편집하여 OneNerd가 제안한대로 내 매니페스트를 만들 것을 제안 할 수 있습니까? http://mmm4vb6.atom5.com/ – MarkJ

+0

RegFree Com에 대한 msdn 기사는 이렇게 말합니다. "사실 Reg의 원래 의도 -Free COM은 Visual Basic 6.0, C++ 또는 일부 언어 조합으로 작성된 것과 같은 기존의 기본 응용 프로그램을 활성화하는 것이 었습니다. " VB6 RegFree com에서 아무 것도 찾지 못했습니다 ... 어떤 링크? –

+0

VB6에서 My Manifest가 작동합니다. OneNerd의 대답을 참조하십시오. – MarkJ

0
  • 레지스트리가 필요없는 COM : MakeMyManifest은 잘 알려져 있습니다. VB6 프로젝트의 매니페스트를 만들기위한 자동 도구입니다. 직접 시도하지 않았습니다.
  • DirectCOM은 레지스트리가 필요없는 COM의 대안입니다. 팬들도 있고, 다시 시도하지 않았습니다.

편집 MMM 웹 사이트가 다운되었습니다. 작성자가 자신의 호스팅에 문제가있는 here을보고 내 위치 확인을위한 다른 위치를 제공했습니다 - download it here.

레지스트리가없는 COM에 대한 매니페스트를 만드는 반자동 기법이 있습니다. Visual Studio 2008을 사용하여 매니페스트를 만들 수 있습니다 (Visual Basic Express Edition과 같은 무료 버전을 사용할 수 있음). 그런 다음 매니페스트를 VB6에서 사용할 수 있도록 손으로 두 번 편집합니다. 단계별 지침은이 MSDN 문서의 this section을 참조하십시오. 나머지 ClickOnce에 대한 기사는 무시하십시오.

0

Unattended Make My Manifest은 자동 빌드에서 매니페스트를 생성하는 데 사용할 수있는 MMM을 리메이크 한 것입니다. 스크립트 파일을 사용하여 종속 된 COM 구성 요소를 추가합니다.

관련 문제