以管理员身份从 java 启动命令提示符 (CMD)
我正在开发一个java项目。该项目需要管理员权限才能执行系统中的某些流程。为此,有什么方法可以在启动项目时授予管理员权限?有没有办法从java中以管理员权限启动命令提示符?
I am working on a java project. This project need admin privileges to execute some process in the system. For this is there any way to give admin privileges while starting the project? Is there any way to start command prompt with admin privileges from java?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
免责声明:我假设您是专门针对 Windows 平台提出这个问题的
我推荐两种方法:
使用 runas 程序
这是最简单的方法,因为您实际上想要一个控制台窗口,所以密码提示看起来并不尴尬。另一方面,用户可能会发现在控制台窗口中输入密码是可疑的。
使用CreateProcessWithLogonW< /a> API 函数
这需要您使用 Win32 Java 库。 (我推荐 JNA)。这需要更多的工作,但由于标准的 Windows 登录对话框,它可能会带来更好的用户体验。
Disclaimer: I assume you are asking this specifically for the Windows platform
There are two ways I'd recommend:
Use the runas program
This is the easiest way and since you actually want a console window the password prompt doesn't look awkward. On the other hand a user might find it suspicious to enter his password into a console window.
Use the CreateProcessWithLogonW API function
This requires you to use a Win32 Java library. (I'd recommend JNA). It is a little more work but it might lead to a better user experience because of the standard Windows login dialog.
您不能简单地请求管理权限,也不能从未使用管理权限启动的应用程序启动管理命令行。这将是一个严重的安全问题。
相反,您可以检查您的应用程序是否以管理权限启动,如果没有则提示用户执行此操作(显示一些有关如何存档此内容的操作方法)。
不幸的是,这似乎是一个更大的问题,因为没有标准化的方法可以覆盖所有平台。然而,这个线程提供了一些想法: Detect if Java application was run as Windows 管理员
You can't simply request admin-privileges and you can't start an admin-command-line from an application that was not launched with admin-privileges. This would be a serious security problem.
Instead, you can check if your app was started with administrative privileges and if not prompt the user to do so (showing a little How-To on how to archive this).
Unfortunately this seams to be a bigger problem since there is no standardized way to do this covering all platforms. However this thread gives some ideas: Detect if Java application was run as a Windows admin