使用winsw添加win10服务

安装使用

winsw的使用比较简单。从github上下载:winsw下载  下载以下两个文件即可

 

将下载的文件放到同一个文件夹(将下载的两个文件 改为相同的文件名 我这改成了 filesf.exe 和filesf.xml)

先写配置文件

配置完成 进入改文件夹(将jar包文件放入同一文件夹)

cmd 超级管理员打开  执行 

filesf.exe install 添加服务

filesf.exe uninstall 删除服务

启动服务批处理(找到文件位置 取得管理员权限 执行添加服务 开启服务 )  

@echo off
@echo 取得当前目录
pushd "%cd%"
cd ..
set pard=%cd%
popd
echo 上一层目录为%pard%
echo 当前目录为%cd%
@echo off
pushd "%cd%"
cd ..
set pard=%cd%
popd


@echo off
CLS
ECHO.
ECHO ================================
ECHO 获取批处理文件管理员权限
ECHO ================================
:init
setlocal DisableDelayedExpansion
set "batchPath=%~0"
for %%k in (%0) do set batchName=%%~nk
set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs"
setlocal EnableDelayedExpansion
:checkPrivileges
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )
:getPrivileges
if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
ECHO.
ECHO ********************************
ECHO 请求 UAC 权限批准……
ECHO ********************************
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
ECHO args = "ELEV " >> "%vbsGetPrivileges%"
ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
ECHO args = args ^& strArg ^& " " >> "%vbsGetPrivileges%"
ECHO Next >> "%vbsGetPrivileges%"
ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
"%SystemRoot%\System32\WScript.exe" "%vbsGetPrivileges%" %*
exit /B
:gotPrivileges
setlocal & pushd .
cd /d %~dp0
if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul & shift /1)
ECHO 取得权限成功

ECHO 开始安装文件管理系统服务并开机启动 进入winsw 下载文件的目录 开启服务

filesf.exe install

ECHO 服务配置成功
ECHO 开始启动文件管理系统服务 (net start 服务id)
net start file
ECHO 服务启动成功
pause

ps: 关闭删除服务  直接修改取得权限成功下面代码

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
压缩包包含instsrv.exe srvany.exe两个文件 服务是一种应用程序类型,它在后台运行。要管理系统服务,请运行services.msc,打开“服务”对话窗口,这里可以看到当前系统中的所有服务。双击某一服务,在弹出的“属性”对话框的“常规”选项页中的“服务状态”栏可以看到此服务当前状态。单击“启动类型”下拉菜单,可以将该服务设置为自动启动、手动启动或禁用。     用instsrv.exe程序设置成服务启动   Windows的“服务”工具是不能添加/删除服务的,但可以利用Windows提供的资源工具包中的Instsrv.exe和Srvany.exe来实现。其中,Instsrv.exe可以给系统安装和删除服务,Srvany.exe可以让程序以服务的方式运行。   ★设置方法   第一步:报户口——注册服务名称   这里就以建立一个名为explorer的服务为例来说明,首先将Instsrv.exe和Srvany.exe存放到一个比较方便的地方,建议放到系统安装目录中(笔者的Windows XP安装目录为D:\Windows)。运行cmd.exe,进入“命令提示符”窗口,执行命令:cd d:\Windows,进入系统安装目录。运行命令:   Instsrv explorer d:\Windows\srvany.exe   好了,这条命令的成功运行,已经在系统中注册了一个名叫explorer的服务,快到“服务”中看看一下检验检验吧!   小提示   ★注册服务:instsrv :这里的可任意取名,前面必须带上该文件的绝对路径,如:D:\Windows\srvany.exe。   ★删除服务:instsrv remove   第二步:找关联   要让explorer服务正常运行,还必须在注册表中指定该服务对应的应用程序。运行Regedit.exe,打开“注册表编辑器”,依次展开如下子键:[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services],在该子键下找到并右击explorer(对应前面建立的服务名),选择“新建”下的“项”,将其命名为Parameters。单击选定它,在右侧窗口中新建一个名为Application的字符串值,将其数值数据设置为explorer服务对应的应用程序绝对路径,比如:d:\Windows\gboor.exe。接着再新建两个字符串值:AppDirectory和AppParameters,AppDirectory指定程序所在的目录,AppParameters指明程序运行的参数(注意:可以不用设值),如图1所示,最后关闭注册表编辑器。   接下来打开“服务”窗口,找到刚添加的explorer服务,打开其属性对话框,单击切换到“登录”选项页,在“登录身份”中选中“本地系统账户”,如图2,如果不想让服务在运行的时候弹出状态窗口,请不要勾选“允许服务与桌面交互”复选项,单击“确定”返回。至此,explorer服务已经全部配置好了。   最后,右击该服务,选择“启动”,这样该程序就会启动,而且以后也会在系统启动时自动以服务形式运行!
很高兴能够为您提供这个问题的解答。以下是基于TCP协议的流式套接字,采用多线程、客户/服务器模式,完成一个控制台的 “石头、剪刀、布” 人机对战游戏程序的示例代码: 服务器端: ```c++ #include <iostream> #include <WinSock2.h> #pragma comment(lib,"ws2_32.lib") using namespace std; #define PORT 8888 // 端口号 int main() { // 初始化 Winsock 库 WSADATA wsaData; int result = WSAStartup(MAKEWORD(2, 2), &wsaData); if (result != NO_ERROR) { cerr << "WSAStartup failed: " << result << endl; return 1; } // 创建 socket SOCKET serverSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (serverSocket == INVALID_SOCKET) { cerr << "socket failed with error: " << WSAGetLastError() << endl; WSACleanup(); return 1; } // 绑定 socket sockaddr_in serverAddr; serverAddr.sin_family = AF_INET; serverAddr.sin_port = htons(PORT); serverAddr.sin_addr.s_addr = INADDR_ANY; result = bind(serverSocket, (sockaddr*)&serverAddr, sizeof(serverAddr)); if (result == SOCKET_ERROR) { cerr << "bind failed with error: " << WSAGetLastError() << endl; closesocket(serverSocket); WSACleanup(); return 1; } // 监听 socket result = listen(serverSocket, SOMAXCONN); if (result == SOCKET_ERROR) { cerr << "listen failed with error: " << WSAGetLastError() << endl; closesocket(serverSocket); WSACleanup(); return 1; } cout << "Server is running..." << endl; while (true) { // 接受客户端连接 SOCKET clientSocket = accept(serverSocket, NULL, NULL); if (clientSocket == INVALID_SOCKET) { cerr << "accept failed with error: " << WSAGetLastError() << endl; closesocket(serverSocket); WSACleanup(); return 1; } cout << "Client connected." << endl; // 处理客户端请求 while (true) { char buffer[1024] = { 0 }; result = recv(clientSocket, buffer, sizeof(buffer), 0); if (result > 0) { // 解析客户端请求 int choice = atoi(buffer); srand(time(NULL)); int computerChoice = rand() % 3; // 发送响应给客户端 char response[1024] = { 0 }; if (choice == computerChoice) { sprintf(response, "Tie!"); } else if ((choice == 0 && computerChoice == 1) || (choice == 1 && computerChoice == 2) || (choice == 2 && computerChoice == 0)) { sprintf(response, "You win!"); } else { sprintf(response, "Computer wins!"); } send(clientSocket, response, strlen(response), 0); } else if (result == 0) { cout << "Client disconnected." << endl; closesocket(clientSocket); break; } else { cerr << "recv failed with error: " << WSAGetLastError() << endl; closesocket(clientSocket); WSACleanup(); return 1; } } } // 关闭 socket closesocket(serverSocket); // 清理 Winsock 库 WSACleanup(); return 0; } ``` 客户端: ```c++ #include <iostream> #include <WinSock2.h> #pragma comment(lib,"ws2_32.lib") using namespace std; #define SERVER_ADDRESS "127.0.0.1" // 服务器地址 #define PORT 8888 // 端口号 int main() { // 初始化 Winsock 库 WSADATA wsaData; int result = WSAStartup(MAKEWORD(2, 2), &wsaData); if (result != NO_ERROR) { cerr << "WSAStartup failed: " << result << endl; return 1; } // 创建 socket SOCKET clientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (clientSocket == INVALID_SOCKET) { cerr << "socket failed with error: " << WSAGetLastError() << endl; WSACleanup(); return 1; } // 连接服务器 sockaddr_in serverAddr; serverAddr.sin_family = AF_INET; serverAddr.sin_port = htons(PORT); inet_pton(AF_INET, SERVER_ADDRESS, &serverAddr.sin_addr); result = connect(clientSocket, (sockaddr*)&serverAddr, sizeof(serverAddr)); if (result == SOCKET_ERROR) { cerr << "connect failed with error: " << WSAGetLastError() << endl; closesocket(clientSocket); WSACleanup(); return 1; } while (true) { // 获取用户输入 int choice = 0; cout << "Please enter your choice (0 for rock, 1 for scissors, 2 for paper): "; cin >> choice; // 发送请求给服务器 char request[1024] = { 0 }; sprintf(request, "%d", choice); send(clientSocket, request, strlen(request), 0); // 接受服务器响应 char response[1024] = { 0 }; result = recv(clientSocket, response, sizeof(response), 0); if (result > 0) { cout << "Result: " << response << endl; } else if (result == 0) { cout << "Server disconnected." << endl; break; } else { cerr << "recv failed with error: " << WSAGetLastError() << endl; closesocket(clientSocket); WSACleanup(); return 1; } } // 关闭 socket closesocket(clientSocket); // 清理 Winsock 库 WSACleanup(); return 0; } ``` 在 Visual Studio 中,您可以使用 Visual C++ 集成开发环境来编译和运行这个程序。在运行之前,您需要在项目属性中添加 `ws2_32.lib` 作为附加依赖项。如果您使用的是其他编译器或开发环境,请相应地进行配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值