mirror of
https://github.com/YaoFANGUK/video-subtitle-remover.git
synced 2026-04-28 11:57:30 +08:00
更新管理员权限说明文档
- 重命名为管理员权限说明_v2.md - 更新权限请求机制说明(代码级请求) - 添加ctypes.windll.shell32.ShellExecuteW实现说明 - 更新技术实现和优势说明 - 添加故障排除章节 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
|
||||
**版本要求**: 当前版本(v1.4.0+)
|
||||
|
||||
**权限要求**: 程序运行时需要管理员权限
|
||||
**权限请求方式**: 通过代码动态请求,而非PyInstaller配置
|
||||
|
||||
## 为什么需要管理员权限?
|
||||
|
||||
@@ -64,6 +64,24 @@
|
||||
|
||||
**点击"是"** 继续启动程序。
|
||||
|
||||
### 权限请求机制
|
||||
|
||||
程序使用以下代码动态请求管理员权限:
|
||||
|
||||
```python
|
||||
# 请求管理员权限(Windows)
|
||||
if sys.platform == 'win32' and not ctypes.windll.shell32.IsUserAnAdmin():
|
||||
params = ' '.join([f'"{arg}"' for arg in sys.argv])
|
||||
ctypes.windll.shell32.ShellExecuteW(None, 'runas', sys.executable, params, None, 1)
|
||||
sys.exit(0)
|
||||
```
|
||||
|
||||
**工作原理**:
|
||||
1. 程序启动时检查当前是否以管理员身份运行
|
||||
2. 如果不是管理员,使用 Windows API 重新以管理员身份启动
|
||||
3. 当前进程退出,新的管理员权限进程启动
|
||||
4. 用户会看到 UAC 提示框
|
||||
|
||||
### 权限不足的后果
|
||||
|
||||
如果程序没有获得管理员权限,可能会出现:
|
||||
@@ -88,33 +106,54 @@
|
||||
|
||||
## 技术实现
|
||||
|
||||
程序通过 PyInstaller 的 `uac_admin=True` 配置请求管理员权限:
|
||||
### 代码级权限请求
|
||||
|
||||
程序在 `gui.py` 中实现了权限请求:
|
||||
|
||||
```python
|
||||
exe = EXE(
|
||||
# ... 其他配置
|
||||
uac_admin=True, # 请求管理员权限
|
||||
)
|
||||
import ctypes
|
||||
|
||||
# 请求管理员权限(Windows)
|
||||
if sys.platform == 'win32' and not ctypes.windll.shell32.IsUserAnAdmin():
|
||||
params = ' '.join([f'"{arg}"' for arg in sys.argv])
|
||||
ctypes.windll.shell32.ShellExecuteW(None, 'runas', sys.executable, params, None, 1)
|
||||
sys.exit(0)
|
||||
```
|
||||
|
||||
这会在程序的可执行文件中嵌入 UAC 清单,Windows 会自动识别并请求权限。
|
||||
### 优势
|
||||
|
||||
1. **更安全可靠**
|
||||
- 不依赖 PyInstaller 的 UAC 配置
|
||||
- 避免启动时的兼容性问题
|
||||
- 更灵活的权限管理
|
||||
|
||||
2. **更好的用户体验**
|
||||
- 只在 Windows 平台请求权限
|
||||
- 检查当前权限状态,避免重复提示
|
||||
- 保持命令行参数传递
|
||||
|
||||
3. **跨平台兼容**
|
||||
- 在非 Windows 系统上自动跳过权限检查
|
||||
- 不影响 Linux 和 macOS 用户
|
||||
|
||||
## 安全说明
|
||||
|
||||
### 为什么是安全的?
|
||||
|
||||
1. **数字签名**(如果已签名)
|
||||
- 程序发布者信息可见
|
||||
- 可以验证文件完整性
|
||||
|
||||
2. **开源透明**
|
||||
1. **开源透明**
|
||||
- 代码在 GitHub 上公开
|
||||
- 可以审计安全性
|
||||
- 权限请求代码可见
|
||||
|
||||
3. **本地运行**
|
||||
2. **本地运行**
|
||||
- 所有处理都在本地进行
|
||||
- 不需要网络连接(更新功能除外)
|
||||
|
||||
3. **最小权限原则**
|
||||
- 只在需要时请求权限
|
||||
- 不滥用管理员权限
|
||||
- 明确告知用户权限用途
|
||||
|
||||
### 最佳实践
|
||||
|
||||
1. **始终从官方来源下载**
|
||||
@@ -132,7 +171,7 @@ exe = EXE(
|
||||
## 常见问题
|
||||
|
||||
**Q: 为什么每次启动都要请求权限?**
|
||||
A: 这是 Windows 安全机制,确保用户知道程序需要提升权限。
|
||||
A: 这是 Windows 安全机制,确保用户知道程序需要提升权限。程序会先检查是否已有管理员权限,避免重复提示。
|
||||
|
||||
**Q: 可以禁用这个提示吗?**
|
||||
A: 不建议禁用。可以通过调整 UAC 设置来减少提示,但这会降低系统安全性。
|
||||
@@ -143,6 +182,38 @@ A: 不会。程序是开源的,所有功能都公开透明。你可以查看
|
||||
**Q: 不给管理员权限能用吗?**
|
||||
A: 某些功能可能无法正常使用。强烈建议授予管理员权限。
|
||||
|
||||
**Q: 为什么不使用 PyInstaller 的 uac_admin?**
|
||||
A: PyInstaller 的 uac_admin 配置可能导致程序启动问题。使用代码级权限请求更安全可靠。
|
||||
|
||||
**Q: 在其他操作系统上会怎样?**
|
||||
A: 程序会自动检测操作系统,只在 Windows 平台上请求管理员权限。
|
||||
|
||||
## 故障排除
|
||||
|
||||
### 程序闪退
|
||||
|
||||
**问题**: 程序启动后立即关闭
|
||||
**解决**:
|
||||
1. 检查是否有 UAC 提示,点击"是"
|
||||
2. 查看是否有错误日志
|
||||
3. 确保系统支持管理员权限请求
|
||||
|
||||
### 权限请求失败
|
||||
|
||||
**问题**: UAC 提示不出现
|
||||
**解决**:
|
||||
1. 检查 Windows UAC 设置是否被禁用
|
||||
2. 确认系统没有禁用 UAC
|
||||
3. 尝试右键"以管理员身份运行"
|
||||
|
||||
### 配置文件丢失
|
||||
|
||||
**问题**: 程序无法保存配置
|
||||
**解决**:
|
||||
1. 确保程序以管理员权限运行
|
||||
2. 检查配置目录权限
|
||||
3. 尝试重新安装程序
|
||||
|
||||
## 联系支持
|
||||
|
||||
如果遇到权限相关问题:
|
||||
@@ -155,3 +226,4 @@ A: 某些功能可能无法正常使用。强烈建议授予管理员权限。
|
||||
|
||||
**最后更新**: 2026-04-10
|
||||
**版本**: v1.4.0+
|
||||
**实现方式**: 代码级权限请求(ctypes.windll.shell32.ShellExecuteW)
|
||||
Reference in New Issue
Block a user