部分提升/子程序的Java写注册表

部分提升/子程序的Java写注册表,java,windows,drag-and-drop,uac,Java,Windows,Drag And Drop,Uac,我的Java程序使用Windows注册表来存储一些值。(是的,这是无法改变的) 问题是我实现了一个拖放功能,但是如果进程被提升,Windows不允许拖放,而且拖放源也不允许 类似于将文件夹从Windows资源管理器拖动到程序 现在我的问题是,是否可以部分提升我的程序,或者使用提升的子程序,并以某种方式将值传递给主程序 是的,我知道浏览器也可以提升,但默认情况下没有用户具有此功能。使用的解决方案: 主应用程序启动后,创建一个ServerSocket,然后启动Helper应用程序,该应用程序包装在一

我的Java程序使用Windows注册表来存储一些值。(是的,这是无法改变的)

问题是我实现了一个拖放功能,但是如果进程被提升,Windows不允许拖放,而且拖放源也不允许

类似于将文件夹从Windows资源管理器拖动到程序

现在我的问题是,是否可以部分提升我的程序,或者使用提升的子程序,并以某种方式将值传递给主程序

是的,我知道浏览器也可以提升,但默认情况下没有用户具有此功能。

使用的解决方案:

主应用程序启动后,创建一个ServerSocket,然后启动Helper应用程序,该应用程序包装在一个.exe中,在启动时请求管理员权限

同时,主应用程序等待助手通过套接字连接,然后助手通过ObjectOutputStream从注册表发送所有读取值


Helper应用程序将停留在while(true)中并等待主应用程序的进一步指示,如果主应用程序关闭,它将向Helper发送“exit”命令,然后Helper将关闭。

简单回答:是,可以使用子应用程序或调用具有提升权限的脚本来完成注册表任务。根据您拖放的内容,您可以通过多种方式执行此操作,最好的选择可能是通过套接字连接或运行将所需参数传递到注册表的脚本,或者一种便宜而讨厌的方法可能是通过两个程序都知道的目录中的文本文件,第二个应用程序将作为管理员运行,并执行注册表部分,通过serversocket连接到主应用程序?是的,套接字连接这是在应用程序之间传递数据的更好方式之一。我只是想知道,因为我想用launch4j将我的程序打包成EXE,我将如何包含第二个不会被提升的jar实际上,等等,我将为我的程序lmao使用一个文件夹