You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python获取权限将Windows用户名写入CSV文件(UAC场景)

解决UAC提权后Python脚本无法生成CSV的问题

这个问题我之前碰到过好几次,核心原因是普通用户通过UAC提权到管理员后,进程的运行上下文会发生变化——当前工作目录、网络驱动器映射这些都会和普通用户状态不一样,导致脚本找不到输出路径或者没有写入权限。下面给你几个实用的解决方案:

1. 强制使用绝对路径输出CSV

不要依赖相对路径(比如直接写output.csv),因为提权后脚本的当前工作目录会默认变成C:\Windows\System32,而不是你共享的Linux驱动器目录。直接指定共享盘的绝对路径就能解决这个问题:

import getpass
# 替换成你共享的Linux驱动器的绝对路径,比如Z盘下的某个文件夹
output_file = r"Z:\your_shared_folder\win_username.csv"

with open(output_file, 'w', newline='', encoding='utf-8') as f:
    f.write(f"Username,{getpass.getuser()}")

2. 使用UNC路径替代驱动器号

Windows UAC提权后,普通用户映射的网络驱动器(比如Z盘)不会被管理员进程继承,所以管理员身份可能看不到这个驱动器。这时候用远程桌面共享的UNC路径就很管用——默认共享的Linux目录会映射到\\tsclient\开头的路径,比如你共享了Linux的/home/user/scripts,对应的UNC路径就是\\tsclient\home\user\scripts:

import getpass
# 替换成你的共享目录对应的UNC路径
output_file = r"\\tsclient\home\user\scripts\win_username.csv"

with open(output_file, 'w', newline='', encoding='utf-8') as f:
    f.write(f"Username,{getpass.getuser()}")

这个路径在提权后的管理员上下文里也能直接访问,不需要依赖驱动器映射,稳定性更高。

3. 确保共享目录的权限设置正确

不管用哪种路径,都要确认共享目录的权限允许管理员身份写入:

  • 在Linux端,检查共享目录的权限,确保Windows端的用户(包括管理员)有读写权限;
  • 在Windows端,右键共享的目录,进入「安全」选项卡,确认「Administrators」组或者「Authenticated Users」有「写入」权限。

4. 通过批处理指定提权后的工作目录

如果习惯用批处理运行脚本,可以用runas命令提权的同时指定工作目录,这样脚本就能用相对路径了:

@echo off
# 替换成你的管理员用户名、脚本所在目录和脚本文件名
runas /user:你的管理员账户 "cmd /k cd /d Z:\your_script_dir && python your_script.py"

运行这个批处理时,会弹出UAC确认框,确认后命令提示符会直接切换到脚本所在的共享目录,脚本就能正常生成CSV了。


内容的提问来源于stack exchange,提问作者Hrvoje T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:16:09