在 Windows 下检查 Python 脚本中的管理员权限的跨平台方法?
有没有跨平台的方法来检查我的Python脚本是否以管理员权限执行? 不幸的是,os.getuid()
仅适用于 UNIX,在 Windows 下不可用。
Is there any cross-platform way to check that my Python script is executed with admin rights? Unfortunately, os.getuid()
is UNIX-only and is not available under Windows.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这是我根据接受的答案创建的实用函数:
Here's a utility function I created from the accepted answer:
最好检查脚本正在运行的平台(使用 sys.platform )并基于该平台进行测试,例如从另一个特定于平台的模块导入一些 hasAdminRights 函数。
在 Windows 上,您可以使用 os.access 检查 Windows\System32 是否可写,但请记住尝试检索系统的实际“Windows”文件夹路径,可能使用 pywin32。 不要硬编码。
It's better if you check which platform your script is running (using
sys.platform
) and do a test based on that, e.g. import some hasAdminRights function from another, platform-specific module.On Windows you could check whether
Windows\System32
is writable usingos.access
, but remember to try to retrieve system's actual "Windows" folder path, probably using pywin32. Don't hardcode one.尝试执行任何需要管理员权限的操作,并检查是否失败。
但这只适用于某些事情,你想做什么?
Try doing whatever you need admin rights for, and check for failure.
This will only work for some things though, what are you trying to do?
管理员组成员身份(域/本地/企业)是一回事。
定制您的应用程序以不使用一揽子特权并设置细粒度的权限是一个更好的选择,特别是在交互式使用应用程序的情况下。
测试特定的命名权限(se_shutdown se_restore 等),文件权限是更好的选择并且更容易诊断。
Administrator group membership (Domain/Local/Enterprise) is one thing..
tailoring your application to not use blanket privilege and setting fine grained rights is a better option especially if the app is being used iinteractively.
testing for particular named privileges (se_shutdown se_restore etc), file rights is abetter bet and easier to diagnose.