我正在编写一个实用程序来启动和停止Windows服务.该程序将分布在具有不同级别用户权限的许多计算机上,因此我不想使用命令行.我尝试过使用JNA,
import com.sun.jna.platform.win32.W32Service;
import com.sun.jna.platform.win32.W32ServiceManager;
import com.sun.jna.platform.win32.Winsvc;
/**
*
* @author
*/
public class WindowsServices {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
try
{
// TODO code application logic here
W32ServiceManager serviceManager = new W32ServiceManager();
W32Service service = serviceManager.openService("uvnc_service", Winsvc.SERVICE_ACCEPT_STOP);
service.stopService();
service.close();
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行该程序时,我收到以下错误
com.sun.jna.platform.win32.Win32Exception:句柄无效.位于windowsservices.WindowsServices.main的com.sun.jna.platform.win32.W32ServiceManager.openService(W32ServiceManager.java:77)(WindowsServices.java:26)
任何建议都会有所帮助.
有谁知道如何通过Java获取可执行文件的文件信息.方案是我的本地系统上有一个文件,如果服务器上的版本比较新,那么我的系统上的版本需要从服务器下载文件.
我有一个使用 ascii 编码用 C# 编写的文本文件,当我尝试使用 java 项目读取该文件时,我在文件开头得到一个ZERO WIDTH NO-BREAK SPACE字符。有人遇到过这种情况吗?
private static void SavePrivateKey(object key)
{
if (logger.IsInfoEnabled) logger.Info("SavePrivateKey - Begin");
string privatekey = (string)key;
string strDirName = Utility.RCTaskDirectory;
string strFileName = "PrivateKey.PPK";
string strKeyPathandName = Path.Combine(strDirName, strFileName);
//if (File.Exists(strKeyPathandName))
//{
// File.Create(strKeyPathandName);
//}
if (!string.IsNullOrEmpty(privatekey))
{//Save private key file
if (!Directory.Exists(strDirName))
Directory.CreateDirectory(strDirName);
FileStream fileStream = new FileStream(strKeyPathandName, FileMode.OpenOrCreate);
//TODO: Save File as ASCII
using (StreamWriter sw = new StreamWriter(fileStream, Encoding.ASCII))
{
if (logger.IsDebugEnabled) logger.DebugFormat("Saving the private key …Run Code Online (Sandbox Code Playgroud)