Run Batch file as administrator - Windows 7 - Command "Run As" from network file system

NoobTom picture NoobTom · May 2, 2012 · Viewed 48.7k times · Source

I need to set up the delivery of a program installer.

This program has a program_installer.exe and a folder that i cannot include in the installer at the time in which i create the installer.

therefore, when a user needs to install the program i send him a BATCH file via MAIL

@echo off
if DEFINED PROGRAMFILES(X86) (
SET TOOL_INSTALL_DIR="%PROGRAMFILES(X86)%\myfolder"
) else (
SET TOOL_INSTALL_DIR="%PROGRAMFILES%\myfolder"
)

MKDIR %TOOL_INSTALL_DIR%
copy /y \\rk0012352\Public\lkh5iwwh.m4s %TOOL_INSTALL_DIR%


START %PROGRAMFILES%\program_installer.exe

The issue is that, when the user execute the BATCH and run COPY command, on windows 7 the command will fail because he has no ADMIN rights.

How can i make that copy command run as administrator on both XP and 7 ?

You might say: when the user gets the EMAIl with INSTALL.BAT, CAN'T he click RUN AS ADMINISTRATOR?

The answer unfortunately is that most of them will not do that and just complain that it doesn't work. Moreover many email client such as Outlook will prompt "open" "save" choice panel and most of the users will click Open directly(generating the no rights error)

the "run as" commands requires to specify the administrator name for the machine and i cannot know how the admin user is called on every computer.

Any suggestion?

Answer

Adriano Repetti picture Adriano Repetti · May 2, 2012

It's a little bit tricky but it can be done.

First you have to know (from the batch file) if the user is an administrator. If it is then you can simply go on with installation. If it's not you can run another cmd.exe instance to run the batch file as administrator (using the runas command).

To detect if the user is an administrator take a look to this post: http://www.tomshardware.co.uk/forum/169421-36-determine-batch-file-user-administrator (there is the full code to elevate the batch itself too).