2010-12-20 4 views
4

Windows 7에서 실행되는 VB6 응용 프로그램의 매니페스트 파일을 만들었습니다. (비주얼 스타일 변경이 아닌 일반 레지스트리에 액세스하고 가상 레지스트리에 액세스하는 것임)VB6 매니페스트가 Windows 7에서 작동하지 않습니다.

EXE 파일 이름은 매니페스트가 Capadm40.exe.manifest 이름, Capadm40.exe이며 다음이 포함되어

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <assemblyIdentity version="1.0.0.0" 
    processorArchitecture="X86" 
    name="CompanyName.Capadm40" 
    type="win32"/> 
    <description>Administers the System</description> 
    <!-- Identify the application security requirements. --> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
    <security> 
     <requestedPrivileges> 
     <requestedExecutionLevel 
      level="asInvoker" 
      uiAccess="false"/> 
     </requestedPrivileges> 
     </security> 
    </trustInfo> 
</assembly> 

그러나,이 모든 차이를 만들 것 같지 않습니다. 즉, 응용 프로그램은 여전히 ​​가상화 된 레지스트리 하이브를 사용하고 있습니다. 또한 이상한 것은 응용 프로그램 exe의 속성에서 '관리자 권한으로이 프로그램 실행'옵션을 선택하지 않은 경우입니다. Windows는 여전히 응용 프로그램 아이콘에 방패를 표시하여 이것이 내 Windows 설치와 관련된 문제라고 생각합니다. 매니 페스트의 잘못보다 어떤 아이디어?

+0

exe에 차폐막이있는 경우 반드시 실행할 때 높이를 묻는 메시지가 표시됩니까? 그리고이 경우 UAC 가상화가 아닌 가상화를 얻지 못할 것입니다.매니페스트 문제를 해결하기 전에 가상 하이브 위치에 정말로 쓰고 있는지 정말로 확신하고 있습니까? –

+0

권한 상승을 요구하는 것이 아니며 방패를 보여주는 아이콘이 어떤 종류의 창 버그 여야한다고 생각합니다. 왜냐하면 데이터 경로가 다를 때 가상 레지스트리를 사용하기 때문에 내가 마우스 오른쪽 버튼을 클릭하고 관리자를 runas. 문제는 매니페스트가 영향을 미치지 않는 것 같습니다 (심지어 requireAdministrator 수준으로 변경 한 경우에도) –

+0

매니페스트가 유효합니까? 예 : UTF-8로 인코딩 되었습니까? – MarkJ

답변

1

내가 LaVolpe의 매니페스트 창조자를 활용할 것, XP, Vista 및 7 위대한 작품 : http://www.vbforums.com/showthread.php?t=606736

+0

이전에 Make Manifest를 사용해 보았지만 프로젝트 두 개를 열었을 때 추락하여 급격한 U 턴을 걸었습니다.이 도구는 잘 작동하는 것 같습니다. 감사합니다 –

+1

누구든지 이것에 비틀 거리는 사람에게 더 많은 메모 - 거의 18 개월 후; 나는이 매니 페스트 작성자를 많은 VB6 프로젝트에 사용했으며 장애없이 작업했습니다. –

2

아마도 융합 캐시 (및 탐색기 셸의 아이콘 캐시)와 충돌 할 것입니다. 어쨌든 외부 적 매니 페스트는 강력하게 권장되지 않지만 이전에 프로그램을 실행 한 후에 프로그램을 추가하려고하면 이러한 증상이 나타납니다.

간략한 설명은 Manifest and the fusion cache을 참조하십시오.

touch EXE를 사용하여 캐시를 다시로드 할 수도 있습니다.

+0

이것은 정확히 내가 본 것처럼 보이는 시나리오입니다 - 외부 매니페스트의 변경 사항은 아무런 변화가없는 것 같았습니다. 그것은 뚜렷한 이유없이 작동 할 것입니다 - 이제 나는 이유를 안다! –

0

나는 단지 모든 플랫폼 9 배 +에서 작동 한 매니페스트를 발견했다. 또는 전혀 작동합니다. 나는 모든 예제, 기사 등을 시도했다.

버전 번호 나 그것에 추가 된 것은 그것을 죽일 것이다. 가능한 예외는 requestedExecutionLevel의 추가 매개 변수입니다. 레벨을 변경할 수 있으며 uiAccess를 추가 할 수 있습니다. 그것들은 허용된다. 바이너리 카운트 테스트를 많이 한 후에, 마이크로 소프트가 제공하는 매니 페스트의 귀여운 추가 기능으로 창문을 여러 가지 오류로 만들 수 있다는 것을 알게되었습니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <ms_asmv2:trustInfo xmlns:ms_asmv2="urn:schemas-microsoft-com:asm.v2"> 
     <ms_asmv2:security> 
      <ms_asmv2:requestedPrivileges> 
       <ms_asmv2:requestedExecutionLevel level="asInvoker"> 
       </ms_asmv2:requestedExecutionLevel> 
      </ms_asmv2:requestedPrivileges> 
     </ms_asmv2:security> 
    </ms_asmv2:trustInfo> 
</assembly> 
-1

VB6의 IDE에 스타일을 적용 :

저장 vb6.exe과 같은 폴더에 vb6.exe.manifest라는 이름의 파일이 텍스트 :

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
<assemblyIdentity 
    version="1.0.0.0" 
    processorArchitecture="X86" 
    name="Microsoft.VisualBasic.IDE" 
    type="win32" 
/> 
<description>Visual Basic 6 IDE</description> 
<dependency> 
    <dependentAssembly> 
     <assemblyIdentity 
      type="win32" 
      name="Microsoft.Windows.Common-Controls" 
      version="6.0.0.0" 
      processorArchitecture="X86" 
      publicKeyToken="6595b64144ccf1df" 
      language="*" 
     /> 
    </dependentAssembly> 
</dependency> 
</assembly> 

하면 파일 끝 부분에 공백을 추가 672 바이트 (4의 배수)에 도달 할 때까지 그런 다음

:

  1. 다운로드 리소스 해커와 관리자로
  2. 파일을 엽니 다>는 VB6.exe을 열
  3. 파일> 새로 빈 스크립트
  4. 유형 : 1 24 "vb6.exe.manifest"
  5. 컴파일 스크립트
  6. 저장
+0

IDE에서만 작동 –

+0

예, 첫 번째 줄에 넣었습니다. 이것은 컴파일하기 전에 디버깅하는 동안 비주얼 스타일을 가진 응용 프로그램을 보려고하는 것입니다. –

+0

그건 내가 요구 한 것이 아닙니다. –

관련 문제