Solved

How to elevate permission to batch install app

Posted on 2011-02-17
4
1,766 Views
Last Modified: 2012-05-11
I need to streamline the installation of an application for computers running various OS (XP, Vista, Win 7) with extremely] novice users. I've been working with the following code (found elsewhere on this site where it was unfortunately not credited to the author) that seems to work well in identifying the right OS. Everything works until the Call %ELEVATED_CMD line.

@echo off
:: ****************** Prompt for elevated permissions *************************
:: This makes the batch file prompt for elevated permissions on Windows Vista
:: or Windows 7, then re-run itself
VER | FINDSTR /IL "5.1." > NUL
IF %ERRORLEVEL% EQU 0 SET Version=XP

VER | FINDSTR /IL "5.2." > NUL
IF %ERRORLEVEL% EQU 0 SET Version=2003

VER | FINDSTR /IL "6.0." > NUL
IF %ERRORLEVEL% EQU 0 SET Version=Vista

VER | FINDSTR /IL "6.1." > NUL
IF %ERRORLEVEL% EQU 0 SET Version=7

If "%Version%"=="XP" GoTo SkipElevation
If "%Version%"=="2003" GoTo SkipElevation

PushD "%~dp0"

If Exist "%~0.ELEVATED" GoTo SkipElevation

:: Have to escape double quotes because they are passed to Cmd.exe via ShellExecute
Set CMD_Args=%0 %*
Set CMD_Args=%CMD_Args:"=\"%

Set ELEVATED_CMD=PowerShell -Command (New-Object -com 'Shell.Application').ShellExecute('Cmd.exe', '/C %CMD_Args%', '', 'runas')

echo.
echo Calling this file to re-run with elevated privileges
echo.

Call %ELEVATED_CMD%

echo.
echo Paused to read error message before exit
echo.
pause

Exit
:SkipElevation
If Exist "%~0.ELEVATED" Del "%~0.ELEVATED"
:: ****************************************************************************
:: program install command here.

It fails on line 1, character 75 but, I don't understand exactly what to expect in the way for a prompt or whether it should just running with advanced permissions. I'm a far cry from being an accomplished script guy but this looks to be almost perfect so I really need help.

It occurs to me that many novice users operate with admin permissions so the script would run so I should also probably only test for users who don't have admin privileges.
0
Comment
Question by:ProTek2
  • 3
4 Comments
 
LVL 43

Expert Comment

by:Jackie Man
ID: 34922722
The information below maybe helpful for you.

Source: http://www.wilderssecurity.com/showthread.php?t=267862
Set CMD_Args=%0 %*
Set CMD_Args=%CMD_Args:"=\"%
Set ELEVATED_CMD=PowerShell -Command (New-Object -com 'Shell.Application').ShellExecute('Cmd.exe', '/C %CMD_Args%', '', 'runas')
Echo %ELEVATED_CMD% >> "%~0.ELEVATED"
:: If there are single quotes in the arguments, this will fail
Call %ELEVATED_CMD%
Exit
:SkipElevation
If Exist "%~0.ELEVATED" Del "%~0.ELEVATED"

Open in new window

0
 

Author Comment

by:ProTek2
ID: 34923050
That post is using the exact same code segment that I found and if you lift it out of that post and run it, (Win 7 32 bit) you will find that it returns the exact same error.

What I want to know is why it fails and how to make it work.
0
 

Accepted Solution

by:
ProTek2 earned 0 total points
ID: 34926228
I discovered the problem. One of the folder names in the path contained an apostrophe. Eliminating that eliminated the error.
0
 

Author Closing Comment

by:ProTek2
ID: 34959110
I solved the problem myself.
0

Featured Post

Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

New Windows 7 Installations take days for Windows-Updates to show up and install. This can easily be fixed. I have finally decided to write an article because this seems to get asked several times a day lately. This Article and the Links apply to…
When you try to share a printer , you may receive one of the following error messages. Error message when you use the Add Printer Wizard to share a printer: Windows could not share your printer. Operation could not be completed (Error 0x000006…
This Micro Tutorial will give you a basic overview of Windows DVD Burner through its features and interface. This will be demonstrated using Windows 7 operating system.
This Micro Tutorial will give you a introduction in two parts how to utilize Windows Live Movie Maker to its maximum capability. This will be demonstrated using Windows Live Movie Maker on Windows 7 operating system.

776 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question