java - 是否可以从用户模式 ​​java 应用程序查询特权 Windows 服务?

标签 java c++ winapi service ntfs-mft

背景

我正在开发一个应用程序,我需要使用 java 查询我硬盘上的所有可用文件。由于性能是一项主要要求,因此我编写了一个 native 应用程序,它访问 Windows Master File Table ($MBT) 以获取所有有效文件条目。

我计划将 native 修改为 Windows 服务(以管理员权限运行……需要访问 MFT),然后使用我的用户模式 ​​Java 应用程序通过某种 IPC 技术(特别是共享内存或命名管道或套接字)联系它...需要评估)。

目标应用程序是windows specific,java用于文本处理(我知道python/perl很擅长,但很久没用了)。

问题

现在我的问题是-

  1. 是否可以从有限用户级别的应用程序查询特权 Windows 服务?
  2. 如果不是,实现这一目标的解决方法是什么?
  3. 我认为套接字可能是可能的 IPC 机制,因为其他两个机制会因 Access Denied 而失败。我的假设是否正确?
  4. 将 native 代码转换为 JNI/DLL 然后使用是否符合我的计划?但在那种情况下,我必须通过自定义 list 文件以管理员权限启动我的 Java 应用程序。

平台

  1. Windows 7 企业版
  2. Visual Studio 2012(用于 native $MFT 访问)
  3. JDK 版本 1.7.0_25-b17

谢谢

最佳答案

由于这是一个特定于 Windows 的问题,您可以使用特定于 Windows 的解决方案。在这种情况下,具有适当安全性的命名管道就足够了。在您的服务中创建管道时,您可以保护它以授予允许桌面应用程序访问管道的权限。

关于java - 是否可以从用户模式 ​​java 应用程序查询特权 Windows 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24422503/

相关文章:

java - 运行 jar 文件时不显示图标

java - Java 23 小时制中的日期差异

c++ - std::result_of 和 decltype 之间的区别

C++:编译器错误覆盖来自 DLL 的函数

c++ - 创建带有图标和透明背景的设备上下文

java - 如何显示过程调用的进度条

java - charAt() 或子字符串?哪个更快?

C++模板偏特化问题

winapi - CEF3 与 WINAPI

c++ - 如何将 LPTSTR 转换为 LPCTSTR?