package windows;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.UnknownHostException;
import java.util.Iterator;
import jcifs.UniAddress;
import jcifs.smb.NtlmPasswordAuthentication;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileInputStream;
import jcifs.smb.SmbSession;
import cn.chenlichao.wmi4j.SWbemLocator;
import cn.chenlichao.wmi4j.SWbemObject;
import cn.chenlichao.wmi4j.SWbemObjectSet;
import cn.chenlichao.wmi4j.SWbemServices;
import cn.chenlichao.wmi4j.WMIVariant;
public class WmiProcess {
private SWbemLocator locator;
private SWbemServices wbemServices;
private static final String service_name = "10.128.9.27";
private static final String user_name = "administrator";
private static final String password = "password";
public WmiProcess() throws UnknownHostException, Exception {
locator = new SWbemLocator(service_name, user_name, password, "root\\cimv2");//
wbemServices = locator.connectServer();
}
void startNotepad() throws Exception {
SWbemObjectSet process = wbemServices.get("Win32_Process").instances();
Iterator<SWbemObject> iterator = process.iterator();
while (iterator.hasNext()) {
SWbemObject obj = iterator.next();
WMIVariant caption = obj.getPropertyByName("Caption");
if (caption.getStringValue().equals("mysqld.exe")) {
System.out.println("ReturnValue: " + obj.getObjectText());
}
}
}
public static void main(String[] args) throws Exception {
WmiProcess manager = new WmiProcess();
long start = System.currentTimeMillis();
String path = "c:\\aa";
String name = "aa";
String fileName = "aa.txt";
int create = manager.execCommand("md " + path);// 新建文件夹
if (create == 0) {
int share = manager.createShareFoder(path, name);// 共享文件夹
Thread.sleep(1200);// 防止共享没完成
System.out.println("--------------" + share);
if (share == 0 || share == 22) {
// int write = manager.execCommand("netstat -ano >" + path +
// File.separator + fileName);// 执行命令写文件
// char[] dd={'"'};
// String comm = new String(dd);
String comm ="\"";
int write = manager.execCommand("db2cmd -c "+comm+"db2 list database directory >" + path + File.separator + fileName+comm);// 执行命令写文件
System.out.println("write------" + write);
Thread.sleep(1200);// 防止文件没有写完
if (write == 0) {
boolean read = true;
manager.getFile();
if (read) {
// int del = manager.execCommand("rd/s/q " + path);//
// 强制删除文件文件夹和文件夹内所有文
boolean del = manager.deleteShare(name);
manager.execCommand("rd/s/q " + path);//
// 强制删除文件文件夹和文件夹内所有文
if (!del) {
System.out.println("删除文件夹及文件失败" + path);
}
} else {
System.out.println("读取文件失败" + path);
}
} else {
System.out.println("写文件失败" + path);
}
} else {
System.out.println("共享文件夹失败" + path);
}
} else {
System.out.println("新建文件夹失败" + path);
}
System.out.println("整体耗时:" + (System.currentTimeMillis() - start) / 1000 + "s");
}
private int createShareFoder(String path, String name) throws Exception {
SWbemObject shareClass = wbemServices.get("Win32_Share");
SWbemObject inParams = shareClass.getInParametersByMethodName("Create");
inParams.setPropertyByName("Path", new WMIVariant(path));
inParams.setPropertyByName("Name", new WMIVariant(name));
inParams.setPropertyByName("Type", new WMIVariant("0"));// Disk Drive
SWbemObject result = shareClass.execMethod("Create", inParams);
// System.out.print("result=" + result.getObjectText());
int flag = result.getPropertyByName("ReturnValue").getIntValue();
return flag;
}
private int execCommand(String command) throws Exception {
// 获取Win32_Process类
SWbemObject processClass = wbemServices.get("Win32_Process");
// 实例化Create方法需要的ProcessStartupInformation参数,并设定相关属性
SWbemObject processStartup = wbemServices.get("Win32_ProcessStartup").spawnInstance();
processStartup.setPropertyByName("ShowWindow", new WMIVariant(1));
// 获取Create方法的参数定义,并设定相关参数值
SWbemObject inParams = processClass.getInParametersByMethodName("Create");
inParams.setPropertyByName("CommandLine", new WMIVariant("cmd.exe /c " + command));
inParams.setPropertyByName("ProcessStartupInformation", new WMIVariant(processStartup));
System.out.print("inParams=" + inParams.getObjectText());
// 执行Create方法
SWbemObject result = processClass.execMethod("Create", inParams);
// System.out.print("result=" + result.getObjectText());
// 验证执行结果
int flag = result.getPropertyByName("ReturnValue").getIntValue();
return flag;
}
private int execCommandDb2(String commandDb2) throws Exception {
// 获取Win32_Process类
SWbemObject processClass = wbemServices.get("Win32_Process");
// 实例化Create方法需要的ProcessStartupInformation参数,并设定相关属性
SWbemObject processStartup = wbemServices.get("Win32_ProcessStartup").spawnInstance();
processStartup.setPropertyByName("ShowWindow", new WMIVariant(1));
// 获取Create方法的参数定义,并设定相关参数值
SWbemObject inParams = processClass.getInParametersByMethodName("Create");
inParams.setPropertyByName("CommandLine", new WMIVariant("db2cmd.exe /c " + commandDb2));
inParams.setPropertyByName("ProcessStartupInformation", new WMIVariant(processStartup));
System.out.print("inParams=" + inParams.getObjectText());
// 执行Create方法
SWbemObject result = processClass.execMethod("Create", inParams);
// System.out.print("result=" + result.getObjectText());
// 验证执行结果
int flag = result.getPropertyByName("ReturnValue").getIntValue();
return flag;
}
public void getFile() throws Exception {
System.out.println("-----------共享文件夹---------------");
long start = System.currentTimeMillis();
// int BUFFER_SIZE = 1024;
BufferedReader reader = null;
// SmbFile file = new
// SmbFile("smb://finchina;daieel:123456@192.168.100.246/Soft/sc8
// key.txt");
// SmbFile file = new
// SmbFile("smb://10.15.97.181/xx部资料库/工作文档/查询逻辑.txt");d
// http://samba.2283325.n4.nabble.com/Peformance-questions-td4644647.html
System.setProperty("jcifs.smb.client.dfs.disabled", "true");
UniAddress dc = UniAddress.getByName(service_name);
NtlmPasswordAuthentication authentication = new NtlmPasswordAuthentication("", user_name, password);
SmbSession.logon(dc, authentication);
SmbFile file = new SmbFile("smb://"+service_name+"/aa/aa.txt", authentication);
reader = new BufferedReader(new InputStreamReader(new SmbFileInputStream(file)));
// 循环对文件进行读取
String line;
try {
// resultLines = new ArrayList<String>();
while ((line = reader.readLine()) != null) {
//GBK、UTf-8、iso8859-1、GB2312
String aa=new String(line.getBytes("UTf-8"), "GBK");
System.out.println(aa);
System.out.println("line=" + new String(aa.getBytes("UTf-8"),"UTf-8"));
// resultLines.add(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (reader != null) {
reader.close();
}
} catch (Exception e) {
}
}
// System.out.println(content);
System.out.println("读文件耗时:" + (System.currentTimeMillis() - start) / 1000 + "s");
}
private boolean deleteShare(String name) throws Exception {
boolean flag = false;
// SWbemObjectSet set = wbemServices.execQuery("Select * from
// Win32_Share Where Name = '" + name + "'");
// Iterator<SWbemObject> iterator = set.iterator();
// while (iterator.hasNext()) {
// SWbemObject obj = iterator.next();
// obj.delete();
// }
flag = true;
return flag;
}
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.UnknownHostException;
import java.util.Iterator;
import jcifs.UniAddress;
import jcifs.smb.NtlmPasswordAuthentication;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileInputStream;
import jcifs.smb.SmbSession;
import cn.chenlichao.wmi4j.SWbemLocator;
import cn.chenlichao.wmi4j.SWbemObject;
import cn.chenlichao.wmi4j.SWbemObjectSet;
import cn.chenlichao.wmi4j.SWbemServices;
import cn.chenlichao.wmi4j.WMIVariant;
public class WmiProcess {
private SWbemLocator locator;
private SWbemServices wbemServices;
private static final String service_name = "10.128.9.27";
private static final String user_name = "administrator";
private static final String password = "password";
public WmiProcess() throws UnknownHostException, Exception {
locator = new SWbemLocator(service_name, user_name, password, "root\\cimv2");//
wbemServices = locator.connectServer();
}
void startNotepad() throws Exception {
SWbemObjectSet process = wbemServices.get("Win32_Process").instances();
Iterator<SWbemObject> iterator = process.iterator();
while (iterator.hasNext()) {
SWbemObject obj = iterator.next();
WMIVariant caption = obj.getPropertyByName("Caption");
if (caption.getStringValue().equals("mysqld.exe")) {
System.out.println("ReturnValue: " + obj.getObjectText());
}
}
}
public static void main(String[] args) throws Exception {
WmiProcess manager = new WmiProcess();
long start = System.currentTimeMillis();
String path = "c:\\aa";
String name = "aa";
String fileName = "aa.txt";
int create = manager.execCommand("md " + path);// 新建文件夹
if (create == 0) {
int share = manager.createShareFoder(path, name);// 共享文件夹
Thread.sleep(1200);// 防止共享没完成
System.out.println("--------------" + share);
if (share == 0 || share == 22) {
// int write = manager.execCommand("netstat -ano >" + path +
// File.separator + fileName);// 执行命令写文件
// char[] dd={'"'};
// String comm = new String(dd);
String comm ="\"";
int write = manager.execCommand("db2cmd -c "+comm+"db2 list database directory >" + path + File.separator + fileName+comm);// 执行命令写文件
System.out.println("write------" + write);
Thread.sleep(1200);// 防止文件没有写完
if (write == 0) {
boolean read = true;
manager.getFile();
if (read) {
// int del = manager.execCommand("rd/s/q " + path);//
// 强制删除文件文件夹和文件夹内所有文
boolean del = manager.deleteShare(name);
manager.execCommand("rd/s/q " + path);//
// 强制删除文件文件夹和文件夹内所有文
if (!del) {
System.out.println("删除文件夹及文件失败" + path);
}
} else {
System.out.println("读取文件失败" + path);
}
} else {
System.out.println("写文件失败" + path);
}
} else {
System.out.println("共享文件夹失败" + path);
}
} else {
System.out.println("新建文件夹失败" + path);
}
System.out.println("整体耗时:" + (System.currentTimeMillis() - start) / 1000 + "s");
}
private int createShareFoder(String path, String name) throws Exception {
SWbemObject shareClass = wbemServices.get("Win32_Share");
SWbemObject inParams = shareClass.getInParametersByMethodName("Create");
inParams.setPropertyByName("Path", new WMIVariant(path));
inParams.setPropertyByName("Name", new WMIVariant(name));
inParams.setPropertyByName("Type", new WMIVariant("0"));// Disk Drive
SWbemObject result = shareClass.execMethod("Create", inParams);
// System.out.print("result=" + result.getObjectText());
int flag = result.getPropertyByName("ReturnValue").getIntValue();
return flag;
}
private int execCommand(String command) throws Exception {
// 获取Win32_Process类
SWbemObject processClass = wbemServices.get("Win32_Process");
// 实例化Create方法需要的ProcessStartupInformation参数,并设定相关属性
SWbemObject processStartup = wbemServices.get("Win32_ProcessStartup").spawnInstance();
processStartup.setPropertyByName("ShowWindow", new WMIVariant(1));
// 获取Create方法的参数定义,并设定相关参数值
SWbemObject inParams = processClass.getInParametersByMethodName("Create");
inParams.setPropertyByName("CommandLine", new WMIVariant("cmd.exe /c " + command));
inParams.setPropertyByName("ProcessStartupInformation", new WMIVariant(processStartup));
System.out.print("inParams=" + inParams.getObjectText());
// 执行Create方法
SWbemObject result = processClass.execMethod("Create", inParams);
// System.out.print("result=" + result.getObjectText());
// 验证执行结果
int flag = result.getPropertyByName("ReturnValue").getIntValue();
return flag;
}
private int execCommandDb2(String commandDb2) throws Exception {
// 获取Win32_Process类
SWbemObject processClass = wbemServices.get("Win32_Process");
// 实例化Create方法需要的ProcessStartupInformation参数,并设定相关属性
SWbemObject processStartup = wbemServices.get("Win32_ProcessStartup").spawnInstance();
processStartup.setPropertyByName("ShowWindow", new WMIVariant(1));
// 获取Create方法的参数定义,并设定相关参数值
SWbemObject inParams = processClass.getInParametersByMethodName("Create");
inParams.setPropertyByName("CommandLine", new WMIVariant("db2cmd.exe /c " + commandDb2));
inParams.setPropertyByName("ProcessStartupInformation", new WMIVariant(processStartup));
System.out.print("inParams=" + inParams.getObjectText());
// 执行Create方法
SWbemObject result = processClass.execMethod("Create", inParams);
// System.out.print("result=" + result.getObjectText());
// 验证执行结果
int flag = result.getPropertyByName("ReturnValue").getIntValue();
return flag;
}
public void getFile() throws Exception {
System.out.println("-----------共享文件夹---------------");
long start = System.currentTimeMillis();
// int BUFFER_SIZE = 1024;
BufferedReader reader = null;
// SmbFile file = new
// SmbFile("smb://finchina;daieel:123456@192.168.100.246/Soft/sc8
// key.txt");
// SmbFile file = new
// SmbFile("smb://10.15.97.181/xx部资料库/工作文档/查询逻辑.txt");d
// http://samba.2283325.n4.nabble.com/Peformance-questions-td4644647.html
System.setProperty("jcifs.smb.client.dfs.disabled", "true");
UniAddress dc = UniAddress.getByName(service_name);
NtlmPasswordAuthentication authentication = new NtlmPasswordAuthentication("", user_name, password);
SmbSession.logon(dc, authentication);
SmbFile file = new SmbFile("smb://"+service_name+"/aa/aa.txt", authentication);
reader = new BufferedReader(new InputStreamReader(new SmbFileInputStream(file)));
// 循环对文件进行读取
String line;
try {
// resultLines = new ArrayList<String>();
while ((line = reader.readLine()) != null) {
//GBK、UTf-8、iso8859-1、GB2312
String aa=new String(line.getBytes("UTf-8"), "GBK");
System.out.println(aa);
System.out.println("line=" + new String(aa.getBytes("UTf-8"),"UTf-8"));
// resultLines.add(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (reader != null) {
reader.close();
}
} catch (Exception e) {
}
}
// System.out.println(content);
System.out.println("读文件耗时:" + (System.currentTimeMillis() - start) / 1000 + "s");
}
private boolean deleteShare(String name) throws Exception {
boolean flag = false;
// SWbemObjectSet set = wbemServices.execQuery("Select * from
// Win32_Share Where Name = '" + name + "'");
// Iterator<SWbemObject> iterator = set.iterator();
// while (iterator.hasNext()) {
// SWbemObject obj = iterator.next();
// obj.delete();
// }
flag = true;
return flag;
}
}
需要jar,maven依赖地址
<dependency>
<groupId>org.kohsuke.jinterop</groupId>
<artifactId>j-interop</artifactId>
<version>2.0.8-kohsuke-1</version>
</dependency>
<dependency>
<groupId>cn.chenlichao</groupId>
<artifactId>wmi4j</artifactId>
<version>0.9</version>
</dependency>