Mac OS X Python GUI管理员提示
我有一个在OS X上运行的Python应用程序,它使用wxPython来处理界面控件。我想在启动网络服务之前,提示用户输入管理员权限(就像在Objective-C中使用Authorization Service API一样)。
我找到的最接近的库是Bob Ippolito的授权库,但这个库比较老旧,并且在Snow Leopard(OS X 10.6.4 / Python 2.6.4)上有兼容性问题。
我的解决办法是创建一个Objective-C的启动器,用它来以管理员权限运行这个Python应用程序,但这样做感觉有点麻烦。
谢谢大家的帮助!
4 个回答
1
你可能想看看这里的另一个问题的答案:在Mac OS X中,我应该使用什么样的API来提升用户权限到超级用户?
5
如果你只是需要运行一个命令行指令,并且需要更高的权限,那么你可以这样做:
os.system("""osascript -e 'do shell script "<commands go here>" " with administrator privileges'""")
这段代码会在苹果脚本的环境中运行你的命令,并会要求用户输入他们的账户密码;实际上就是用更高权限来执行这个命令。
要注意的是,在你的命令中处理引号会有点麻烦,比如:
os.system("""osascript -e 'do shell script "mkdir -m 0775 -p \\"%s\\" " with administrator privileges'"""%d)
希望这对你有帮助!
2
你可以通过使用 Platypus 把你的整个脚本变成一个原生的Mac OS X应用程序,这样就可以用管理员权限来运行它。