有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

背景

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

我计划将本机修改为windows服务(以管理员权限运行..需要访问MFT),然后使用我的用户模式java应用程序通过一些IPC技术与它联系(特别是共享内存或命名管道或socket…需要评估)

目标应用程序是特定于windows的,java用于文本处理(我知道python/perl很擅长,但很久没有使用它们)

问题

现在我的问题是-

  1. 是否可以从有限的用户级应用程序查询特权windows服务
  2. 如果没有,实现这一点的变通方法是什么
  3. 我认为socket可能是IPC机制,因为其他两个可能会因Access Denied而失败。我这样假设对吗
  4. 将本机代码转换为JNI/DLL,然后使用它是否正确?但在这种情况下,我必须通过拥有自定义清单文件以管理员权限启动java应用程序

平台

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

谢谢


共 (2) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

    1. 您可以查询特权服务、应用程序(如果它提供了一种方法) 当然可以。(即插座、管道等)
    2. 您可以为此使用TCP/UDP套接字。你必须 确保防火墙将此端口阻止在计算机外部
    3. 最简单的&;松耦合的方式是套接字。性能取决于传输的数据量
    4. 监视硬盘文件是一项管理任务。因此,以管理员权限运行这个java应用程序并不是一件坏事。但是,如果您允许普通用户通过外部设置管理员权限来运行此应用程序,这不是一个好的做法