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

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

问题

家里买了个联想个人云盘,但是使用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

相关文章

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

SpringBoot配置Ollama实现本地部署DeepSeek

《SpringBoot配置Ollama实现本地部署DeepSeek》本文主要介绍了在本地环境中使用Ollama配置DeepSeek模型,并在IntelliJIDEA中创建一个Sprin... 目录前言详细步骤一、本地配置DeepSeek二、SpringBoot项目调用本地DeepSeek前言随着人工智能技

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

springboot报错Invalid bound statement (not found)的解决

《springboot报错Invalidboundstatement(notfound)的解决》本文主要介绍了springboot报错Invalidboundstatement(not... 目录一. 问题描述二.解决问题三. 添加配置项 四.其他的解决方案4.1 Mapper 接口与 XML 文件不匹配