
com.vnetpublishing.java.suapp.win.WinSudo Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of super-user-application Show documentation
Show all versions of super-user-application Show documentation
Create self elevating applications
package com.vnetpublishing.java.suapp.win;
import java.io.UnsupportedEncodingException;
import java.lang.management.ManagementFactory;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.sun.jna.WString;
import com.sun.jna.platform.win32.Kernel32;
import com.sun.jna.platform.win32.Kernel32Util;
import com.sun.jna.platform.win32.WinNT.HANDLE;
import com.sun.jna.ptr.IntByReference;
import com.vnetpublishing.java.suapp.ISudo;
import com.vnetpublishing.java.suapp.win.Kernel32X.JOBOBJECT_EXTENDED_LIMIT_INFORMATION;
import com.vnetpublishing.java.suapp.win.Shell32X.SHELLEXECUTEINFO;
public class WinSudo implements ISudo
{
public static String escapeParam(String param)
{
String parts[] = param.split("\\s+");
if (parts.length < 2) {
return param;
}
return String.format(
"\"%s\"",
param.replaceAll("\\", "\\\\").replaceAll("\"", "\\\"")
);
}
private static String toParams(String[] params)
{
StringBuilder sb = new StringBuilder();
if (params.length > 0) {
sb.append(params[0]);
}
for(int idx=1;idx pargs = new ArrayList(args.length + 2);
String jcmd = System.getProperty("sun.java.command");
if (jcmd == null || jcmd.length() < 1) {
if (decodedPath.endsWith(".jar")) {
pargs.add("-jar");
pargs.add(decodedPath);
if (args != null) {
for(int idx=0;idx inputArguments = ManagementFactory.getRuntimeMXBean().getInputArguments();
Iterator iap = inputArguments.iterator();
while(iap.hasNext()) {
pargs.add(iap.next());
}
String[] cmd = jcmd.split("\\s+");
if (cmd.length > 0 && cmd[0].endsWith(".jar")) {
pargs.add("-jar");
}
for(int idx=0;idx