我正在尝试使用InstallUtil.exe安装服务但通过调用Process.Start.这是代码:
ProcessStartInfo startInfo = new ProcessStartInfo (m_strInstallUtil, strExePath);
System.Diagnostics.Process.Start (startInfo);
Run Code Online (Sandbox Code Playgroud)
其中m_strInstallUtil是完全限定的路径和exe"InstallUtil.exe",并且strExePath是我的服务的完全限定路径/名称.
从提升的命令提示符运行命令行语法有效; 从我的应用程序运行(使用上面的代码)没有.我假设我正在处理一些进程提升问题,那么我如何在高架状态下运行我的进程?我需要看一下ShellExecute吗?
这一切都在Windows Vista上.我正在VS2008调试器中运行升级到管理员权限的进程.
我也试过设置,startInfo.Verb = "runas";但似乎没有解决问题.
是否可以从Java应用程序中请求提升权限?我看到的建议似乎都集中在运行外部可执行文件或设置清单以请求启动权限.例如,这些小程序不可用.有没有办法从正在运行的应用程序请求提升?
正如标题所说,我想知道用Java(并且只有java)编写的程序是否有可能以管理员权限重新启动自己(最好是.jar),以本机Windows UAC的方式显示(为了制作它对用户来说更可靠),我完成了我的作业,并发现使用c ++和java之间的桥梁可以实现这一点,但我真的很想将它作为一个纯java项目来实现.
PS:在远程情况下,这个结果是不可能的,有人可以用另一种语言向我展示"简单"的方法(我的意思是,我找到了教程,但是我认为它不应该复杂化那么复杂).
P.S2:如果可以实现这一点,它是否可以在其他平台上运行(OS X,Linux)
我正在用Java编写安装程序,因此需要提升权限才能访问Program Files目录.根据我在网上找到的信息,我编写了如下实现:
public static void main(String args[]) {
if (!checkPrivileges()) { // spawn a copy w/ elevated privileges
Runtime runtime = Runtime.getRuntime();
try {
Process p = runtime.exec(
"runas /profile /user:Administrator \"java -cp . main.Main\"");
} catch (IOException e) { ... }
} else {
// Run with elevated privileges
}
}
Run Code Online (Sandbox Code Playgroud)
我用于检查权限的测试稍微修改一下,在这里找到的答案如下所示:
private static boolean checkPrivileges() {
File testPriv = new File("C:\\Program Files\\");
if (!testPriv.canWrite()) return false;
File fileTest = null;
try {
fileTest = File.createTempFile("test", ".dll", …Run Code Online (Sandbox Code Playgroud)
因此,我们的想法是制作一种仅在.txt文件上运行并在其上应用一些加密功能并生成新文件的加密软件。为了避免用户不得不拖放文件的麻烦,我决定在此处做出一个与我的防病毒类似的选项。
我想学习如何针对各种OS制作这些文件,无论其体系结构是什么:)
我认为它将做的是:将文件作为参数传递给main()方法,然后将其余的处理留给我:)