James Hoi's Blog

将BaiduPCS-Web添加进系统服务,可开机自启

Word count: 625Reading time: 2 min
2019/06/17 Share

前言

BaiduPCS-Web并非本人开发,软件只是将其添加进系统服务而已
BaiduPCS-Web Github项目

软件预览

实现原理

其实原理不难,用了instsrv.exe和srvany.exe实现
下载链接

注册服务

方法一:在命令行输入sc create [服务名称] binpath=[srvany.exe路径]/srvany.exe
方法二:在命令行输入[instsrv.exe路径]/instsrv.exe [服务名称] binpath=[srvany.exe路径]/srvany.exe

若显示
[SC] CreateService 失败 1783:
占位程序接收到错误数据。

则一般的解决方法是关闭安全软件

更改注册表

打开注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services<b>[服务名称]
服务名称和刚刚输入的一致

右击新建项,名称为Parameters,然后定位到Parameters项,新建以下几个字符串值。
名称 Application 值为你要作为服务运行的程序地址
名称 AppDirectory 值为你要作为服务运行的程序所在文件夹路径。
名称 AppParameters 值为你要作为服务运行的程序启动所需要的参数。

注册表

注册表

设置为开机自启

命令行输入sc config [服务名称] start=[启用填auto,禁用填demand]

主要功能源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
private void CreateService(int solution)
{
//新建文件流
FileStream fs = new FileStream(startup_path + bat_directory, FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
string createcommand = "";
//软件路径
string path = "\"".Insert(1, startup_path);
switch (solution)
{
//注册方法一
case 1:
createcommand = "sc create " + servicename + " binpath=" + path + "/script/srvany.exe\"";
break;
//注册方法二
case 2:
createcommand = path + "/script/instsrv.exe\" " + servicename + " " + path + "/script/srvany.exe\"";
break;
}
//写入命令至bat文件里
sw.WriteLine(createcommand);
sw.Flush(); sw.Close(); fs.Close();
//运行bat
string output = RunBat(startup_path + bat_directory);

//检测服务是否添加成功
Thread.Sleep(refresh_delay_ms);
CheckService();
if (isRecreate) output = recreate_log + output;
cmdLogTextArea.AppendText(output+"\n");
if (IsServiceInstalled(servicename) != true)
{
if (solution == 2) DisplayError();
else DisplayCreateError();
return;
}

//写入注册表
try
{
RegistryKey key = Registry.LocalMachine;
string directory = @"System\CurrentControlSet\Services\" + servicename + @"\Parameters";
RegistryKey service = key.CreateSubKey(directory);
service.SetValue("Application", startup_path + baidupcs_directory);
service.SetValue("AppDirectory", startup_path + @"\script");
service.SetValue("AppParameters", "");
service.Close();
key.Close();
}catch(Exception e)
{
MessageBox.Show("注册表修改失败!请确保已关闭所有安全软件", "提示");
DeleteService(0);
CheckService();
}
}

Github源码

常见问题

1.如何更新BaiduPCS-Web?
将script文件夹里的BaiduPCS-Go.exe替换为新版本即可

2.为何显示注册失败?
添加服务或写入注册表时失败,尝试将安全软件例如360关闭后重试

下载

Github发布页
微云下载

CATALOG
  1. 1. 前言
  2. 2. 实现原理
    1. 2.1. 注册服务
    2. 2.2. 更改注册表
    3. 2.3. 设置为开机自启
    4. 2.4. 主要功能源码
  3. 3. 常见问题
  4. 4. 下载