2011-03-04 1 views
2

NSIS와 최근에 UAC와의 상호 작용과 관련된 문제가 발생했지만이를 설명하기가 어려울뿐만 아니라 앞으로이를 방지하는 방법을 알지 못합니다.NSIS가 IIS 시스템 파일의 소유권을 가져옴

NsisIIS 플러그인을 사용하여 IIS 가상 디렉터리를 만들고 제거하는 설치 관리자가 있습니다. 설치 프로그램이 내 Windows 7 워크 스테이션에서 제대로 작동하는 것처럼 보였습니다. 설치 관리자가 Windows 2008 R2 서버에서 실행될 때 제대로 설치되었지만 제거 프로그램이 모든 가상 디렉터리를 제거하고 IIS를 사용할 수 없게되었습니다. 내가 기본 웹 사이트를 제거하고 다시 추가해야한다는 요지까지.

나는 결국 C:\Windows\System32\inetsrv\config 아래의 모든 IIS 구성 파일에 자물쇠 아이콘이 있다는 것을 발견했습니다.

일부 investigation

Screenshot of IIS config files after NSIS runs

그러나 모든 파일은 파일의 소유자로 SYSTEM을 나열, 이것은 사용자 계정이 파일의 소유권을 취한 뜻을 나타 내기 위해 보인다. 설치 프로그램을 실행하지 않은 다른 서버를 확인했는데 이 아니라에 IIS 파일에 잠금 아이콘이 적용되어 있지 않습니다.

NSIS 설치 프로그램이 생성하는 다른 파일에도 동일한 자물쇠 아이콘이 나타납니다. 예를 들어, 설치자가 완료된 후에 자물쇠 아이콘과 함께 나타나는 NSIS ReplaceInFile을 사용하여 처리되는 Web.Config.tpl 파일이 있습니다. locked web.config file after installer runs

다른 사용자 계정에 파일에 대한 액세스 권한을 명시 적으로 부여하면 잠금 아이콘이 사라집니다.

After adding the IUSR to the file

나는 2008 R2 서버의 로컬 관리자 계정으로 설치 프로그램을 실행, 그래서는 UAC 프롬프트를하지 않습니다.

  1. 어떻게 이런 일이 않았다 : 여기 세 가지 질문은이 사건에서 유래 한 install.nsi 파일

    RequestExecutionLevel admin 
    
    Section "Application" APP_SECTION 
        SectionIn RO 
        Call InstallApp 
    SectionEnd 
    
    Section "un.Uninstaller Section" 
        Delete "$PROGRAMFILES\${PROGRAMFILESDIR}\Uninstall.exe" 
        Call un.InstallApp 
    SectionEnd 
    
    Function InstallApp 
        File /oname=Web.Config Web.Config.tpl 
        !insertmacro ReplaceInFile Web.Config %CONNECTION_STRING% $CONNECTION_STRING 
    FunctionEnd 
    
    Function un.InstallApp 
        ReadRegStr $0 HKLM "Software\${REGKEY}" "VirtualDir"  
        NsisIIS::DeleteVDir "$0" 
        Pop $0 
    FunctionEnd 
    

    에서 관련 코드는?

  2. 다시 설치되지 않도록 설치 프로그램을 어떻게 해결할 수 있습니까?
  3. IIS 구성 파일의 사용 권한을 어떻게 복구 할 수 있습니까?

답변

1

ReplaceInFile 매크로는 삭제 및 이름 변경 댄스를 수행하므로 파일 보안 정보가 망가질 수 있습니다. 수정하려는 파일의 복사본에있는 매크로를 사용하여 FileOpen을 사용하고 새 내용을 한 줄씩 복사하여이 문제를 해결할 수 있습니다.

IIS 플러그인은 IIS COM 인터페이스를 사용하지만 실제로 무엇이 잘못 될 수 있는지는 확실하지 않습니다. NsisIIS :: DeleteVDir에 빈 문자열을 전달하지 않도록하는 것이 좋습니다.

+0

UAC 플러그인 사용 여부에 대한 의견이 여기에 도움이 될 수 있습니까? – Lucas

+1

@ 루카스 : 도움이 안된다. UAC 플러그인은 당신에게 더 적은 권한을 주지만, 더 이상은 system32에 쓸 수 없다. – Anders