Run Batch file as administrator - Windows 7 - Comm

2019-04-25 09:41发布

问题:

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?

回答1:

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).



回答2:

Not the same thing.

There's a difference between elevating your own scope of permissions and just running within your scope if you are in the administrators group.

Simply using runas /user:username@domain.com program.exe seems not to be the same as right-clicking then selecting "Run as Administrator".



回答3:

There is a way to do this in PowerShell:

PS> Start-Process powershell -Verb runAs