JamesHoi 发表于 2020-3-19 13:50

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

本帖最后由 JamesHoi 于 2020-3-19 14:30 编辑

萌新第一次发帖,多多指教

前言
BaiduPCS-Web并非本人开发,软件只是将其添加进系统服务而已
BaiduPCS-Web吾爱破解帖:https://www.52pojie.cn/thread-841306-1-1.html
萌新我没怎么详细学习c#,代码写的可能不太好,见谅

软件预览


实现原理
其实原理不难,用了instsrv.exe和srvany.exe实现,下载链接:https://share.weiyun.com/5SM9M79

注册服务
方法一:在命令行输入sc create [服务名称] binpath=/srvany.exe
方法二:在命令行输入/instsrv.exe [服务名称] binpath=/srvany.exe
若显示
CreateService 失败 1783:
占位程序接收到错误数据。
则一般的解决方法是关闭安全软件

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

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


设置为开机自启
命令行输入sc config [服务名称] start=[启用填auto,禁用填demand]

主要功能源码
      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();
            }
      }
源码地址:https://github.com/JamesHoi/BaiduPCS-Web-service-win

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

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

下载
Github发布页:https://github.com/JamesHoi/BaiduPCS-Web-service-win/releases
微云:https://share.weiyun.com/5SM9M79

JamesHoi 发表于 2020-4-3 00:32

本帖最后由 JamesHoi 于 2020-4-3 00:36 编辑

leslie835 发表于 2020-4-2 15:26
baidupcs无法上传文件了,按账号也不行,不知道楼主的能否上传,错误代码是:31066
你是用BaiduPCS-Go或BaiduPCS-Web吗,这个就是基于那个搞的,假如那个不行这个就不行

BaiduPCS-Web Github: https://github.com/liuzhuoling2011/baidupcs-web
吾爱破解: https://www.52pojie.cn/thread-841306-1-1.html
BaiduPCS-Go Github: https://github.com/iikira/BaiduPCS-Go

JamesHoi 发表于 2020-4-5 19:39

leslie835 发表于 2020-4-5 17:42
我是用的这个贴子https://www.52pojie.cn/thread-1113803-1-1.html里面的客户端,在GITHUB上面下载的也无 ...
嗯,你这个帖子就是基于BaiduPCS-Go搞的,不行的话我这个也不行。
上Github Issue发问题吧,虽说我上次发的issue到现在还没解决
Github Issue: https://github.com/iikira/BaiduPCS-Go/issues

JamesHoi 发表于 2020-3-20 11:41

顶一下,没有人么...

leslie835 发表于 2020-4-2 15:26

baidupcs无法上传文件了,按账号也不行,不知道楼主的能否上传,错误代码是:31066

leslie835 发表于 2020-4-5 17:42

JamesHoi 发表于 2020-4-3 00:32
你是用BaiduPCS-Go或BaiduPCS-Web吗,这个就是基于那个搞的,假如那个不行这个就不行

BaiduPCS-Web Gi ...

我是用的这个贴子https://www.52pojie.cn/thread-1113803-1-1.html里面的客户端,在GITHUB上面下载的也无法上传。

leslie835 发表于 2020-4-5 19:42

JamesHoi 发表于 2020-4-5 19:39
嗯,你这个帖子就是基于BaiduPCS-Go搞的,不行的话我这个也不行。
上Github Issue发问题吧,虽说我上次 ...

谢谢!有人提了,昨天原作者更新了源代码,但没有更新客户端,等原作者更新客户端吧,谢谢!

JamesHoi 发表于 2020-4-6 23:13

leslie835 发表于 2020-4-5 19:42
谢谢!有人提了,昨天原作者更新了源代码,但没有更新客户端,等原作者更新客户端吧,谢谢!

我看了下,作者貌似说停更了,由于没时间和部分技术困难

leslie835 发表于 2020-4-7 09:54

JamesHoi 发表于 2020-4-6 23:13
我看了下,作者貌似说停更了,由于没时间和部分技术困难

不管他了,谢谢!

leslie835 发表于 2020-4-7 11:08

JamesHoi 发表于 2020-4-6 23:13
我看了下,作者貌似说停更了,由于没时间和部分技术困难

作者已经更新的到3.6.版本了,可以上传了,谢谢!
页: [1] 2
查看完整版本: [C#]将BaiduPCS-Web添加进系统服务,可开机自启