2013-02-01 206 views
14

我正在编写客户端/服务器检查程序,但需要以管理员身份运行。 我想让它在我的网络和用户上静静地运行,并且我不希望“以管理员身份运行”提示符。 是否有任何可以放入批处理文件以使其以管理员身份自动运行的开始代码/以管理员身份运行的批处理脚本

回答

13

NOPE - 创建快捷方式[ - >兼容性 - >“以管理员身份运行此程序”]解决方案不起作用。

此选项是灰色的在Windows 7即使禁用UAC

-

NOPE - 在 “运行方式/ ENV /用户:域\管理员”

还不够因为它会提示用户输入管理员密码。

-

YES - 禁用UAC - >创建一个使用工作任务调度

这为我工作: 下创建任务调度工作,并使其运行与管理员权限的用户。 明确标记:“以最高权限运行” 禁用UAC,因此不会有提示来运行此任务

如果您愿意,可以通过编辑注册表让脚本启用UAC。 在我的情况下,通过创建一个Windows虚拟机,其中UAC在图像中被禁用,该脚本只运行一次。

还在期待为以管理员身份运行脚本,最好的办法,但无太多的麻烦。

+1

UAC部分 禁用UAC C:\ Windows \ System32 \ cmd.exe/k%windir% \ System32 \ reg.exe启用UAC C:\ Windows \ System32 \ cmd.exe/k%\ System32 \ reg.exe ADD HKLM \ SOFTWARE \ Microsoft \ Windows \ windir%\ System32 \ reg.exe添加HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System/v EnableLUA/t REG_DWORD/d 1/f – zenin

4

其可能使用的语法:

RUNAS [/profile] [/env] [/netonly] /user:user Program 

Key : 
/profile Option to load the user's profile (registry) 
/env Use current environment instead of user's. 
/netonly Use the credentials specified only for remote connections. 
/user Username in form [email protected] or DOMAIN\USER 
([email protected] is not compatible with /netonly) 
Program The command to execute 

例如:

runas /env /user:domain\Administrator <program.exe/command you want to execute> 
+10

这将提示输入他不想要的密码。 – eddyq

+0

@eddyq不错,但是这回答了问题的标题,即使问题的主体改变了他所说的他想要的内容。 – leetNightshade

+0

标题不是问题。正文是问题。标题是标题。身体优先,因为它包含细节。 –

0

你可以把它作为一个启动项目...启动项目不会显示提示以管理员身份运行。

检查本文Elevated Program Shortcut Without UAC rompt

+0

堆栈溢出的答案不应该包含“谷歌找到答案”。 –

+0

对不起我的坏。编辑 – sandrows

+0

现在好了,谢谢。 –

1

创建一个快捷方式,并设置快捷方式始终以管理员身份运行。

如何对野人论坛Make a batch file to run cmd as administrator解决方案:

请在编辑一个批处理文件,然后nameit.bat创建它的快捷方式。 Nameit.bat - 快捷方式。然后右键单击Nameit.bat - 快捷方式 - >属性 - >快捷方式选项卡 - >高级,然后单击以管理员身份运行。从快捷方式执行它。

+2

您不能在批处理文件或指向它的快捷方式上设置'以管理员身份运行',令人讨厌。 – StormPooper

+1

你不能在批处理文件中设置它 - 但是你可以**设置它在指向它的快捷方式上 – icc97

1

由于我还没有发现任何简单的脚本,到目前为止,这是我的两分钱:

set ELEVATE_APP=Full command line without parameters for the app to run 
set ELEVATE_PARMS=The actual parameters for the app 
echo Set objShell = CreateObject("Shell.Application") >elevatedapp.vbs 
echo Set objWshShell = WScript.CreateObject("WScript.Shell") >>elevatedapp.vbs 
echo Set objWshProcessEnv = objWshShell.Environment("PROCESS") >>elevatedapp.vbs 
echo objShell.ShellExecute "%ELEVATE_APP%", "%ELEVATE_PARMS%", "", "runas" >>elevatedapp.vbs 
DEL elevatedapp.vbs 

问候,

尼卡。

0

如果以上的答案是不是你喜欢,你可以使用AutoIt的运行文件(或什么都文件)作为其全权证书的特定用户。

样品脚本,将使用用户privelages运行的程序。

installAdmin() 

Func installAdmin() 
    ; Change the username and password to the appropriate values for your system. 
    Local $sUserName = "xxxxx" 
    Local $sPassword = "xxx" 
    Local $sDirectory = "C:\ASD4VM\Download\" 
    Local $sFiletoRun = "Inst_with_Privileges.bat" 

    RunAsWait($sUserName, @ComputerName, $sPassword, 0, $sDirectory & $sFiletoRun) 
EndFunc ;==>Example 

AutoIT can be found here. - >它使用被编译成可运行.exe文件一个.ua3格式。

1

我做了这个轻微修改马特的脚本,使其能够从一个脚本(刚加入这需要UAC调用任意脚本的开始)内运行,但下面的代码读取一个更好的解决方案,我

:: ### START UAC SCRIPT ### 

if "%2"=="firstrun" exit 
cmd /c "%0" null firstrun 

if "%1"=="skipuac" goto skipuacstart 

:checkPrivileges 
NET FILE 1>NUL 2>NUL 
if '%errorlevel%' == '0' (goto gotPrivileges) else (goto getPrivileges) 

:getPrivileges 
if '%1'=='ELEV' (shift & goto gotPrivileges) 

setlocal DisableDelayedExpansion 
set "batchPath=%~0" 
setlocal EnableDelayedExpansion 
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs" 
ECHO UAC.ShellExecute "!batchPath!", "ELEV", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs" 
"%temp%\OEgetPrivileges.vbs" 
exit /B 

:gotPrivileges 

setlocal & pushd . 

cd /d %~dp0 
cmd /c "%0" skipuac firstrun 
cd /d %~dp0 

:skipuacstart 

if "%2"=="firstrun" exit 

:: ### END UAC SCRIPT ### 

:: ### START OF YOUR OWN BATCH SCRIPT BELOW THIS LINE ### 

我修改使用两个文件的参数,你可以看到,这是不是特别优雅,但做这项工作(和你总是可以通过保留第一隐藏他们走在尾部:VE在博客上找到使用虚拟占位符的参数很少)。此外,AFAIK Matt的脚本不支持文件路径中的空格,并且此限制也适用于我对此脚本的修改。

这个问题似乎是VBS处理这些路径的方式固有的,但在下面的链接中有一个更好的基于VBS的调用UAC的解决方案,它可以在单个脚本中运行,而不需要像这样的解决方法参数也支持在文件路径空间:

http://pcloadletter.co.uk/2012/12/11/uac-elevation-for-batch-script/

这个环节上的脚本,使稍有不同VBS电话,你会发现,由于某种原因与空间绕开的问题。

4
@echo off 

call :isAdmin 

if %errorlevel% == 0 (
    goto :run 
) else (
    echo Requesting administrative privileges... 
    goto :UACPrompt 
) 

exit /b 

:isAdmin 
    fsutil dirty query %systemdrive% >nul 
exit /b 

:run 
    <YOUR BATCH SCRIPT HERE> 
exit /b 

:UACPrompt 
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" 
    echo UAC.ShellExecute "cmd.exe", "/c %~s0 %~1", "", "runas", 1 >> "%temp%\getadmin.vbs" 

    "%temp%\getadmin.vbs" 
    del "%temp%\getadmin.vbs" 
    exit /B` 
+0

这对我来说非常合适。谢谢。 – Emad

1

以下是一个变通:

  1. 创建.bat文件的快捷方式
  2. 打开属性快捷的。在快捷方式标签下,点击高级
  3. 勾选“以管理员身份运行”

运行该快捷方式将执行批处理脚本管理员。

相关问题