【个人云盘连接助手】解决多个用户账号无法同时映射到本地磁盘问题

本文主要是介绍【个人云盘连接助手】解决多个用户账号无法同时映射到本地磁盘问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题

家里买了个联想个人云盘,但是使用SAMBA映射到windows本地磁盘时,每次只能连接到一个账户上,于是想着写个小工具,方便切换多个用户账户,自动映射到本地磁盘

开发简介

开发语言:python
主要实现功能:

  • 通过配置文件配置要连接的账户信息
  • 选择不同账户时能够自动连接上并映射到本地磁盘

相关界面

主界面:
在这里插入图片描述
配置文件:
在这里插入图片描述

主要源码

net_store_switch.py

import os
import sys
# 导入QT,其中包含一些常量,例如颜色等
from functools import partialfrom PyQt5 import QtCore, QtWidgets
# 使用调色板等
from PyQt5.QtGui import QIcon
# 导入常用组件
from PyQt5.QtWidgets import QApplication, QMainWindowimport NetStoreSwitchWindow
import tools.system_tool as system_tool
from tools import file_tool# pyinstaller -F -i favicon.ico -w net_store_switch.py -n 联想个人云盘连接助手
class MainWindow(QMainWindow, NetStoreSwitchWindow.Ui_Dialog):def __init__(self, parent=None):super().__init__(parent)self.setupUi(self)start_top = -10for index, user_info in enumerate(user_list):start_top += 50user = user_info['user']password = user_info['password']name = user_info['name']globals()[f'pushButton{index}'] = QtWidgets.QPushButton(self)globals()[f'pushButton{index}'].setGeometry(QtCore.QRect(20, start_top, 261, 41))globals()[f'pushButton{index}'].setObjectName(f'pushButton{index}')globals()[f'pushButton{index}'].setText(f'映射[{name}]的云盘到[{disk_flag}]盘')globals()[f'pushButton{index}'].clicked.connect(partial(self.button_clicked, user_info))start_top += 10self.setMinimumSize(QtCore.QSize(303, 46 + start_top))self.setMaximumSize(QtCore.QSize(303, 46 + start_top))self.setWindowIcon(QIcon('favicon.ico'))self.setWindowTitle(title)self.statusLabel.setText(self.get_status())def button_clicked(self, user_info):sender = self.sender()print(sender.text())print(user_info)user = user_info['user']password = user_info['password']name = user_info['name']system_tool.command('net use * /delete /y')system_tool.command(rf'net use {disk_flag} \\{ip_address}\{user} /user:{user} ' + password + " /persistent:yes")os.system('start explorer')self.statusLabel.setText(f'已连接到[{name}]个人云盘')def get_status(self):status = "当前未连接到个人云盘"result = system_tool.command('net use')if system_tool.is_ok(result):data = result["data"]for user_info in user_list:user = user_info['user']name = user_info['name']if data.find(user) >= 0:status = f"已连接到[{name}]个人云盘"breakreturn statusif __name__ == '__main__':config_file_path = file_tool.root_dir('configs.json')configs = file_tool.read_configs(config_file_path)print(configs)title = configs['title']ip_address = configs['ip_address']disk_flag = configs['disk_flag']user_list = configs['user_list']app = QApplication(sys.argv)# 创建一个主窗口mainWin = MainWindow()# 显示mainWin.show()# 主循环sys.exit(app.exec_())

NetStoreSwitchWindow.py


from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_Dialog(object):def setupUi(self, Dialog):Dialog.setObjectName("Dialog")Dialog.resize(303, 246)sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)sizePolicy.setHorizontalStretch(0)sizePolicy.setVerticalStretch(0)sizePolicy.setHeightForWidth(Dialog.sizePolicy().hasHeightForWidth())Dialog.setSizePolicy(sizePolicy)Dialog.setMinimumSize(QtCore.QSize(303, 246))Dialog.setMaximumSize(QtCore.QSize(303, 246))self.statusLabel = QtWidgets.QLabel(Dialog)self.statusLabel.setGeometry(QtCore.QRect(30, 10, 241, 16))self.statusLabel.setObjectName("statusLabel")self.retranslateUi(Dialog)QtCore.QMetaObject.connectSlotsByName(Dialog)def retranslateUi(self, Dialog):_translate = QtCore.QCoreApplication.translateDialog.setWindowTitle(_translate("Dialog", "联想个人云盘助手"))self.statusLabel.setText(_translate("Dialog", "当前未连接到联想个人云盘"))

工具下载

https://download.csdn.net/download/guangdeshishe/89436365

解压后参考样例配置configs.json文件即可

这篇关于【个人云盘连接助手】解决多个用户账号无法同时映射到本地磁盘问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1066711

相关文章

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

解决RocketMQ的幂等性问题

《解决RocketMQ的幂等性问题》重复消费因调用链路长、消息发送超时或消费者故障导致,通过生产者消息查询、Redis缓存及消费者唯一主键可以确保幂等性,避免重复处理,本文主要介绍了解决RocketM... 目录造成重复消费的原因解决方法生产者端消费者端代码实现造成重复消费的原因当系统的调用链路比较长的时

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

最新Spring Security的基于内存用户认证方式

《最新SpringSecurity的基于内存用户认证方式》本文讲解SpringSecurity内存认证配置,适用于开发、测试等场景,通过代码创建用户及权限管理,支持密码加密,虽简单但不持久化,生产环... 目录1. 前言2. 因何选择内存认证?3. 基础配置实战❶ 创建Spring Security配置文件

kkFileView启动报错:报错2003端口占用的问题及解决

《kkFileView启动报错:报错2003端口占用的问题及解决》kkFileView启动报错因office组件2003端口未关闭,解决:查杀占用端口的进程,终止Java进程,使用shutdown.s... 目录原因解决总结kkFileViewjavascript启动报错启动office组件失败,请检查of

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

java内存泄漏排查过程及解决

《java内存泄漏排查过程及解决》公司某服务内存持续增长,疑似内存泄漏,未触发OOM,排查方法包括检查JVM配置、分析GC执行状态、导出堆内存快照并用IDEAProfiler工具定位大对象及代码... 目录内存泄漏内存问题排查1.查看JVM内存配置2.分析gc是否正常执行3.导出 dump 各种工具分析4.