从Java以管理员身份运行CMD命令

时间:2019-05-11 04:47:10

标签: java windows

我正在尝试在Windows 10中建立文件关联(也应在Win7上运行),以便以.arc结尾的文件随我的程序一起打开。 在admin cmd窗口中键入以下内容即可实现我想要的功能:

assoc .arc=ArcFile
ftype ArcFile=[path to javaw.exe] -jar [path to my jar] %1

当用户单击程序设置窗口中的一个按钮时,我需要运行这些命令。目前,以下代码可以满足我的要求:

String assoc = "assoc .arc=WhiteholeFile";
String ftype = "ftype WhiteholeFile=" + System.getProperty("java.home") + "\\javaw.exe -jar " +
 Whitehole.class.getProtectionDomain().getCodeSource().getLocation().getPath().substring(1) + " %1";
Runtime.getRuntime().exec("cmd /c start runas /savecred /user:administrator \"cmd.exe /c \\\"" + assoc + "\\\"\"");
Runtime.getRuntime().exec("cmd /c start runas /savecred /user:administrator \"cmd.exe /c \\\"" + ftype + "\\\"\"");

它将打开2个CMD窗口,提示您输入管理员密码(每个密码都很烦人),并以admin身份运行命令。问题是默认情况下afaik管理员帐户未启用,并且没有有效的密码,因此用户必须先以管理员身份运行net user administrator password123才能添加帐户。 有什么办法可以避免这种情况,只需要弹出用户帐户控制或类似的内容并征求许可,例如右键单击->以管理员身份运行即可。

0 个答案:

没有答案
相关问题