背景
我正在开发一个应用程序,我需要使用 java 查询我硬盘上的所有可用文件。由于性能是一项主要要求,因此我编写了一个 native 应用程序,它访问 Windows Master File Table ($MBT)
以获取所有有效文件条目。
我计划将 native 修改为 Windows 服务(以管理员权限运行……需要访问 MFT),然后使用我的用户模式 Java 应用程序通过某种 IPC 技术(特别是共享内存或命名管道或套接字)联系它...需要评估)。
目标应用程序是windows specific,java用于文本处理(我知道python/perl很擅长,但很久没用了)。
问题
现在我的问题是-
- 是否可以从有限用户级别的应用程序查询特权 Windows 服务?
- 如果不是,实现这一目标的解决方法是什么?
- 我认为套接字可能是可能的 IPC 机制,因为其他两个机制会因
Access Denied
而失败。我的假设是否正确? - 将 native 代码转换为 JNI/DLL 然后使用是否符合我的计划?但在那种情况下,我必须通过自定义 list 文件以管理员权限启动我的 Java 应用程序。
平台
- Windows 7 企业版
- Visual Studio 2012(用于 native $MFT 访问)
- JDK 版本 1.7.0_25-b17
谢谢
最佳答案
由于这是一个特定于 Windows 的问题,您可以使用特定于 Windows 的解决方案。在这种情况下,具有适当安全性的命名管道就足够了。在您的服务中创建管道时,您可以保护它以授予允许桌面应用程序访问管道的权限。
关于java - 是否可以从用户模式 java 应用程序查询特权 Windows 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24422503/