JAVA “Run as administrator” “UAC disabled” alternative solution

简介:
Technorati 标签:  psexec, run as administrator, UAC

java.io.IOException: Cannot run program "psexec.exe": CreateProcess error=740, The requested operation requires elevation
    at java.lang.ProcessBuilder.start(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at java.lang.Runtime.exec(Unknown Source)
    at com.gdn.BuildHostNow.main(BuildHostNow.java:14)
Caused by: java.io.IOException: CreateProcess error=740, The requested operation requires elevation

old script :

http://stackoverflow.com/questions/1894967/how-to-request-administrator-access-inside-a-batch-file

update script:

 http://stackoverflow.com/questions/7044985/how-can-i-auto-elevate-my-batch-file-so-that-it-requests-from-uac-administrator/28467343#28467343

 

复制代码
@ECHO OFF
setlocal EnableDelayedExpansion

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

:getPrivileges
if '%1'=='ELEV' ( goto START )

set "batchPath=%~f0"
set "batchArgs=ELEV"

::Add quotes to the batch path, if needed
set "script=%0"
set script=%script:"=%
IF '%0'=='!script!' ( GOTO PathQuotesDone )
    set "batchPath=""%batchPath%"""
:PathQuotesDone

::Add quotes to the arguments, if needed.
:ArgLoop
IF '%1'=='' ( GOTO EndArgLoop ) else ( GOTO AddArg )
    :AddArg
    set "arg=%1"
    set arg=%arg:"=%
    IF '%1'=='!arg!' ( GOTO NoQuotes )
        set "batchArgs=%batchArgs% "%1""
        GOTO QuotesDone
        :NoQuotes
        set "batchArgs=%batchArgs% %1"
    :QuotesDone
    shift
    GOTO ArgLoop
:EndArgLoop

::Create and run the vb script to elevate the batch file
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs"
ECHO UAC.ShellExecute "cmd", "/c ""!batchPath! !batchArgs!""", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs"
"%temp%\OEgetPrivileges.vbs" 
exit /B

:START
::Remove the elevation tag and set the correct working directory
IF '%1'=='ELEV' ( shift /1 )
cd /d %~dp0

::Do your adminy thing here...


psexec.exe -s cmd.exe /c dir >d:\output2.log 2>error2.log
复制代码

 

复制代码
@echo off

:: BatchGotAdmin
:-------------------------------------
REM  --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"

REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges...
    goto UACPrompt
) else ( goto gotAdmin )

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

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    pushd "%CD%"
    CD /D "%~dp0"
:--------------------------------------put your command below

psexec.exe -s cmd.exe /c dir >d:\output.log 2>error.log
复制代码



目录
相关文章
|
16天前
|
安全 Java
【JAVA】线程的run()和start()有什么区别?
【JAVA】线程的run()和start()有什么区别?
|
Java Linux 测试技术
java.lang.UnsatisfiedLinkError: C:\Users\Administrator\AppData\Local\Temp\alglib.dll
java.lang.UnsatisfiedLinkError: C:\Users\Administrator\AppData\Local\Temp\alglib.dll
541 0
java.lang.UnsatisfiedLinkError: C:\Users\Administrator\AppData\Local\Temp\alglib.dll
|
9月前
|
IDE Java 开发工具
Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8的解决方案
Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8的解决方案
|
7月前
|
Java Android开发
Eclipse 给 Java 应用创建 Run configuration 时找不到 main type 的错误消息
Eclipse 给 Java 应用创建 Run configuration 时找不到 main type 的错误消息
78 0
|
8月前
|
IDE Java Maven
Java SpringBoot 应用使用命令行 mvn spring-boot run 启动的原理
Java SpringBoot 应用使用命令行 mvn spring-boot run 启动的原理
115 1
|
11月前
|
Java 开发工具 Android开发
Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.
Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.
|
11月前
|
Java
Java线程中的run()和start()区别
Java线程中的run()和start()区别
63 0
|
12月前
|
分布式计算 Hadoop Java
【hadoop】解决java.io.IOException: Cannot run program "bash"
【hadoop】解决java.io.IOException: Cannot run program "bash"
453 0
|
安全 Java
【Java|多线程与高并发】详解start()方法和run()方法的区别
本篇文章主要讲解以下几个问题:start()方法和run()方法的区别与联系 为什么不能连续两次调用shart()方法 run()方法中可能忽略的问题
java.io.IOException: Cannot run program “del“: CreateProcess error=2, 系统找不到指定的文件。
java.io.IOException: Cannot run program “del“: CreateProcess error=2, 系统找不到指定的文件。
409 0