1 前言
**平台要求实现FTP账户同步。FTP账户同步分为两步,第一步将平台用户写入FTP服务器(FileZilla Server)配置文件中(Dom4J读写XML文件),第二部重启FTP服务(指令为net stop/strat “FileZilla Server”)。
在实际测试过程中,我们发现只有Administrator用户才能执行重启FTP服务,如果当前登录的不是Administrator用户,即使该用户是管理员也不能执行重复FTP服务的操作。系统会提示:
为解决该问题,需要对当前用户进行提权操作。本次调研了三种可行方案。
2方案一PSTools(psexec)
2.1简介
pstools是sysinternals出的一个功能强大的nt/2k远程管理工具包。
它的主页为http://www.sysinternals.com/
下载地址为http://www.sysinternals.com/files/Pstools.zip
2.2Psexec指令说明
psexec是一个远程执行工具,你可以像使用telnet一样使用它。
它的使用格式为:
psexec \\远程机器ip [-u username [-p password]] [-c [-f]] [-i][-d] program [arguments]
它的参数有:
-u后面跟用户名 -p后面是跟密码的,如果建立ipc连接后这两个参数则不需要。(如果没有-p参数,则输入命令后会要求你输入密码)
-c <[路径]文件名>:拷贝文件到远程机器并运行(注意:运行结束后文件会自动删除)
-d 不等待程序执行完就返回,(比如要让远程机器运行tftp服务端的时候使用,不然psexec命令会一直等待tftp程序结束才会返回)
-i 在远程机器上运行一个名为psexesvc进程
2.3使用说明
- 将psexec.exe拷贝进工程下的指定目录
- 在JAVA代码中用Runtime.getRuntime().exec()执行以下指令:指定目录/PsExec.exe -accepteula -u administrator –p 密码net stop/strat “FileZilla Server”
3方案二NIRCMD
3.1简介
NirCmd是一套免费的命令行指令,提供许多控制Windows的参数。让你运行命令行的方式,来执行一些常用的动作,例如开启或关闭光驱,增加或减少计算机音量。让你在执行一些常用的动作时,可以更加的有效率。
3.2Elevate指令说明
elevate [Program] {Command-Line Parameters}
仅适用于 Windows Vista/7/2008 ,以管理员权限运行。如果Program包含空格符,则需要用引号括起来。
示例:
elevate notepad.exe
elevate notepad.exe C:\Windows\System32\Drivers\etc\HOSTS
elevate "c:\program files\my software\abc.exe"
3.3使用说明
- 将nircmd.exe拷贝进工程下的指定目录
- 在JAVA代码中用Runtime.getRuntime().exec()执行以下指令:指定目录/ nircmd.exe elevate net stop/strat “FileZilla Server”
4方案三SUBINACL
4.1简介
Subinacl是微软提供的用于对文件、注册表、服务等对象进行权限管理的工具软件。
官方下载地址:
http://www.microsoft.com/en-us/download/details.aspx?id=23510
4.2Subinacl指令说明
Subinacl的命令语法为:
SUBINACL /SERVICE \\MachineName\ServiceName
/GRANT=[DomainName\]UserName[=Access]
运行此命令,用户必须具有管理员权限才能成功完成。
如果省略 MachineName,则假定为本地计算机。
如果省略 DomainName,在本地计算机帐户的搜索。
可以对组进行授权。
Access 可以接受的值如下所示:
F : Full Control
R : Generic Read
W : Generic Write
X : Generic eXecute
L : Read controL
Q : Query Service Configuration
S : Query Service Status
E : Enumerate Dependent Services
C : Service Change Configuration
T : Start Service
O : Stop Service
P : Pause/Continue Service
I : Interrogate Service
U : Service User-Defined Control Commands
4.3使用说明
- 下载subinacl.msi
- 安装subinacl.msi
- 打开cmd,输入net config workstation,红圈中为当前登录的用户名“局域网_aaa”
- 切换用户,使用administrator用户登录
- 打开cmd
- 进入subinacl.msi安装目录下,默认为C:\Program Files (x86)\Windows Resource Kits\Tools
- 执行指令Subinacl /service “FileZilla Server” /grant=局域网_aaa=TO该指令意味着将FileZilla Server服务的启动和关闭权限赋给用户“局域网_aaa”
- 切换用户,使用局域网_aaa登录,在cmd中执行net stop/Start “FileZilla Server”,可成功执行。
5方案对比
方案 |
优点 |
缺点 |
方案一PSTools |
通用性较好,测试Win7,WinServer2008下均可实现服务重启 |
程序需知道Administrator用户密码,有安全隐患。 |
方案二NIRCMD |
Win7下可实现服务重启 无需管理员密码 |
WinServer2008弹框需输入Administrator密码,上线环境中不适用。 |
方案三SUBINACL |
一次性配置,仅开放指定权限 程序无需知道Administrator密码。 较安全。 |
需以administrator用户登录安装配置 |
经过上述三种方案的比较,综合考虑,建议选择第三种方案。
相关推荐
这个方法允许Java程序在运行时执行外部程序或命令。例如,如果我们要在CMD中打开一个.doc文件,可以这样做: ```java String command = "wordpad.exe path_to_your_file.doc"; try { Process p = Runtime....
在Java中,JVM(Java虚拟机)会将字节码转化为机器码,这包括汇编指令,以执行程序。 要查看Java的汇编指令,我们需要一个能够解析JVM字节码并展示其对应汇编代码的工具。一个常用的工具是JITWatch,它是由Adobe...
在Java编程中,有时我们需要执行操作系统级别的命令,例如DOS指令,这通常涉及到与操作系统的交互。Java提供了Runtime类的exec()方法来实现这个功能。本文将深入探讨如何在Java中执行DOS指令以及需要注意的一些关键...
在描述中提到的"调用cmd命令",就是指利用这些方法执行Windows的命令行指令,如`net use`命令来挂载网络共享目录。 2. **访问Windows共享目录**: - Windows的网络共享通常使用SMB(Server Message Block)协议。...
Java开发环境在Windows上的配置是一项基础且重要的任务,对于初学者和专业开发者来说,这个过程可能涉及多个步骤,包括下载JDK、安装、配置环境变量等。"windows java环境一键配置.zip" 提供了一个便捷的方式来完成...
内置linux和Windows通用shell启动停止脚本(无需系统安装Java运行环境).zip”提供了一套适用于Java程序的通用打包方案,特别强调了其能够在Linux和Windows操作系统上无缝运行,且不依赖于系统的Java运行环境。...
在Java编程环境中,有时我们需要与操作系统进行交互,例如调用Windows系统的可执行文件或批处理文件来执行特定任务。这通常通过Java的Runtime类或ProcessBuilder类实现。这两个类允许我们构建命令行指令并执行它们,...
总结,Java执行shell指令主要通过`Runtime.getRuntime().exec()`和`ProcessBuilder`实现。理解它们的工作原理和注意事项是Java开发者必备的技能,尤其在处理系统集成和自动化任务时。同时,要时刻关注命令执行的安全...
用Java实现的copy命令,类似windows命令行的copy命令,能够给复制任何类型文件
3. **运行Java程序**:现在,当你的Java程序运行时,JVM将会输出汇编指令。然而,这种输出通常被淹没在大量的日志信息中。为了更好地查看和分析,你可以使用`jmh`插件的`VisualVM`或者`JProfiler`等可视化工具。 4....
总之,"最新版windows graalvm-ce-java11-windows-amd64-21.3.0.zip"提供了一个强大的开发和运行环境,它在Windows平台上为Java 11应用带来了卓越的性能和跨语言的能力,适用于各种开发场景,尤其是对性能有高要求的...
9. **子文件"java7运行库.exe"**:这个文件很可能是Java 7运行库的安装程序,用户可以通过运行这个可执行文件在Windows操作系统上安装Java 7环境,包括JRE和必要的工具。 10. **安全增强**:Java 7提升了安全特性,...
1. **Java虚拟机(JVM)**:JVM是Java程序执行的引擎,它解析并执行字节码,将这些抽象指令转化为特定平台的机器码,使得Java程序可以在不同的硬件和操作系统上运行。 2. **Java类库**:提供了大量的API(应用程序...
在IT行业中,尤其是在Windows操作系统环境下,我们经常需要执行一些Java程序。为了方便快捷地运行这些程序,我们可以将它们封装到批处理(.bat)文件中。这样,只需双击.bat文件,就可以自动调用Java虚拟机(JVM)...
在Java编程语言中,开发一个仿Windows画图程序是一项挑战性的任务,因为它涉及到图形用户界面(GUI)的设计和绘图功能的实现。这个程序通常会使用Java的Swing或JavaFX库来创建交互式的画布,允许用户进行基本的绘图...
- 因此,无论是在Windows、Linux还是Mac OS等不同操作系统上,只要安装了对应的JVM版本,Java程序就可以顺利运行。 #### 二、Java程序的执行过程详解 Java程序的执行过程可以分为几个步骤: 1. **源代码编译**:...
它可以执行的指令有: t Java文件名 [/?][e][r]或[c] [a] 注意:请不要输入文件的扩展名 [/?] 读取本帮助信息 [/del] 删除当前文件夹中所有的.class文件 [/d] 在Windows资源管理器中显示当前文件夹 [e] 用记事本...
在Java中,直接操作窗口句柄通常是不可能的,但借助JNA,我们可以调用Windows API来实现这些功能。 首先,我们需要引入JNA库,可以在项目中添加jna-4.4.0.jar依赖。这个版本的JNA包含了对多种操作系统API的支持,...
在Java开发过程中,掌握一些常用的命令行指令是十分必要的,这些指令可以帮助我们更高效地进行编译、运行、调试和管理Java项目。本资源“Java开发常用指令大全”提供了一个全面的指南,帮助开发者了解并运用这些核心...
在这个特定的描述中,“jre-6u25-windows-i586-s”是指Java运行时环境(JRE)的第6个更新版(Update 25),针对Windows系统,且是32位(i586)的。32位意味着这个JVM能够运行在支持32位指令集的处理器上。 JRE是...