2014-11-26 5 views
0

runas 관리 모드를 활성화하는 NSIS 스크립트에 사용자 ID와 암호를 어떻게 통합 할 수 있습니까?사용자 이름과 암호로 NSIS 설정 실행

프로그램 파일에 내 응용 프로그램 파일을 복사하는 간단한 NSIS 스크립트가 있습니다. 이 스크립트는 관리자 모드에서 작동합니다. UAC 대화 상자를주지 않고도 관리자 (Administrator)와 암호 (CorpPass @ 2424)를 사용하여 여러 대의 컴퓨터에 설치해야합니다.

샘플 스크립트는

# This installs two files, app.exe and logo.ico, creates a start menu shortcut, builds an uninstaller, and 
# adds uninstall information to the registry for Add/Remove Programs 

# To get started, put this script into a folder with the two files (app.exe, logo.ico, and license.rtf - 
# You'll have to create these yourself) and run makensis on it 

# If you change the names "app.exe", "logo.ico", or "license.rtf" you should do a search and replace - they 
# show up in a few places. 
# All the other settings can be tweaked by editing the !defines at the top of this script 
!define APPNAME "TEST App Name" 
!define COMPANYNAME "TEST NAME" 
!define DESCRIPTION "A short description goes here" 
# These three must be integers 
!define VERSIONMAJOR 1 
!define VERSIONMINOR 1 
!define VERSIONBUILD 1 
# These will be displayed by the "Click here for support information" link in "Add/Remove Programs" 
# It is possible to use "mailto:" links in here to open the email client 
!define HELPURL "http://..." # "Support Information" link 
!define UPDATEURL "http://..." # "Product Updates" link 
!define ABOUTURL "http://..." # "Publisher" link 
# This is the size (in kB) of all the files copied into "Program Files" 
!define INSTALLSIZE 7233 

RequestExecutionLevel admin ;Require admin rights on NT6+ (When UAC is turned on) 

InstallDir "$PROGRAMFILES\${COMPANYNAME}\${APPNAME}" 

# rtf or txt file - remember if it is txt, it must be in the DOS text format (\r\n) 
LicenseData "license.rtf" 
# This will be in the installer/uninstaller's title bar 
Name "${COMPANYNAME} - ${APPNAME}" 
Icon "logo.ico" 
outFile "sample-installer.exe" 

!include LogicLib.nsh 

# Just three pages - license agreement, install location, and installation 
page license 
page directory 
Page instfiles 

!macro VerifyUserIsAdmin 
UserInfo::GetAccountType 
pop $0 
${If} $0 != "admin" ;Require admin rights on NT4+ 
     messageBox mb_iconstop "Administrator rights required!" 
     setErrorLevel 740 ;ERROR_ELEVATION_REQUIRED 
     quit 
${EndIf} 
!macroend 

function .onInit 
    setShellVarContext all 
    !insertmacro VerifyUserIsAdmin 
functionEnd 

section "install" 
    # Files for the install directory - to build the installer, these should be in the same directory as the install script (this file) 
    setOutPath $INSTDIR 
    # Files added here should be removed by the uninstaller (see section "uninstall") 
    file "app.exe" 
    file "logo.ico" 
    # Add any other files for the install directory (license files, app data, etc) here 

    # Uninstaller - See function un.onInit and section "uninstall" for configuration 
    writeUninstaller "$INSTDIR\uninstall.exe" 

    # Start Menu 
    createDirectory "$SMPROGRAMS\${COMPANYNAME}" 
    createShortCut "$SMPROGRAMS\${COMPANYNAME}\${APPNAME}.lnk" "$INSTDIR\app.exe" "" "$INSTDIR\logo.ico" 

sectionEnd 

# Uninstaller 

function un.onInit 
    SetShellVarContext all 

    #Verify the uninstaller - last chance to back out 
    MessageBox MB_OKCANCEL "Permanantly remove ${APPNAME}?" IDOK next 
     Abort 
    next: 
    !insertmacro VerifyUserIsAdmin 
functionEnd 

section "uninstall" 

    # Remove Start Menu launcher 
    delete "$SMPROGRAMS\${COMPANYNAME}\${APPNAME}.lnk" 
    # Try to remove the Start Menu folder - this will only happen if it is empty 
    rmDir "$SMPROGRAMS\${COMPANYNAME}" 

    # Remove files 
    delete $INSTDIR\app.exe 
    delete $INSTDIR\logo.ico 

    # Always delete uninstaller as the last action 
    delete $INSTDIR\uninstall.exe 

    # Try to remove the install directory - this will only happen if it is empty 
    rmDir $INSTDIR 

    # Remove uninstaller information from the registry 
    DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" 
sectionEnd 

답변

0

이있는 경우 관리자 ID와 비밀번호를 직접 내가 일에서 자신을 인증 할 수 administratorID과 암호를했기 때문에 나는 그것이 가능하다고 생각 인증하고 명령을

VB 스크립트

dim WshShell,FSO ,currDir 


set WshShell = CreateObject("WScript.Shell") 
set WshEnv = WshShell.Environment("Process") 
WinPath = WshEnv("SystemRoot")&"\System32\runas.exe" 
set FSO = CreateObject("Scripting.FileSystemObject") 
currDir = FSO.GetAbsolutePathName(".") 

sUser="Admin" 
sPass="Password_123"&VBCRLF 
sCmd= currDir &"\MySetup.exe" 

if FSO.FileExists(winpath) then 
'wscript.echo winpath & " " & "verified" 
else 
set WshShell=Nothing 
set WshEnv=Nothing 
set FSO=Nothing 
wscript.quit 
end if 

rc=WshShell.Run("runas /user:" & sUser & " " & CHR(34) & sCmd & CHR(34), 2, FALSE) 
Wscript.Sleep 90 
WshShell.AppActivate(WinPath) 
WshShell.SendKeys sPass 

set WshShell=Nothing 
set WshEnv=Nothing 
set FSO=Nothing 

wscript.quit 
+1

이 명령은 해당 사용자로 실행되지만 승격되지 않습니다 (높은 IL). 중간 IL로 실행됩니다. (http://msdn.microsoft.com/en-us/library/bb756922.aspx#:"runas는 상승 된 액세스 토큰으로 응용 프로그램을 시작하는 기능을 제공하지 않습니다 "참조) http : //social.technet을 참조하십시오. microsoft.com/Forums/windows/en-US/cd82780b-6afa-4404-8515-5d646a5623de/runas-command-trustlevel-what-is-it-how-can-i-enable- 추가 - 도우미 도구에 대한 레벨 또는 시도 psexec. – Anders

0

당신은 UAC를 우회 할 수없는, 사용자가 보안 데스크톱에 UAC 대화와 상호 작용하는 존재가 있습니다.

Windows 2000/XP/2003에서는 runas/CreateProcessAsUser를 사용하여 새 프로세스를 다른 사용자로 시작할 수 있으며 해당 시스템에서 관리자 권한으로 승격 할 수 있습니다 (2003 년에는 아마도 don 'required privilege'). UAC가 split tokens을 도입했기 때문에 Vista +에서는이 작업이 불가능합니다. 즉, 관리자 그룹의 구성원 인 사용자는 실제로 UAC 대화 상자를 통해 무제한 토큰을 잠금 해제 할 때까지 모든 권한을 가진 관리자가 아닙니다.

특정 사용자로만 새 프로세스를 시작해야하는 경우 LogonUser + CreateProcessAsUser로 계속 수행 할 수 있지만 시작점이 비동기식이면 UAC를 무시하고 무제한 관리자 토큰을 얻을 수 없습니다. 상승 된 프로세스.

NT의 무제한 토큰에 액세스 할 수 있습니다 시스템으로 실행 서비스하지만, 물론 이것은 당신이 처음에 서비스를 설치하려면 적어도 한 번 UAC와 함께 상승한다는 것을 의미합니다 ...

+0

을 실행할 수 있습니다 전자 후드는 NSIS 설정 유틸리티를 사용합니다. – Mozfox