Windows 7(多分Vistaも)で、Pythonからregeditなどの管理者権限が必要なコマンドを
os.systemやos.popen
subprocess.Popen/call/check_callをshell=Trueで呼び出した場合は,
自動的にUACのプロンプトが表示されます。
>>> subprocess.check_call("regedit", shell=True) # os.sytem("regedit")
しかし, subprocess.Popen/call/check_callを、shell引数を指定しないか、shell=Falseで呼び出すと、UACは出ず、単にエラーとなります。
>>> subprocess.check_call(["regedit"]) Traceback (most recent call last): (中略) WindowsError: [Error 740] 要求された操作には管理者特権が必要です。
subprocess.Popen/call/check_callのshell引数は、
http://www.python.jp/doc/release/library/subprocess.html
Windows で shell=True を有効にする必要があるのは dir や copy などのシェル組み込みのコマンドを使いたい場合だけです。バッチファイルを実行するときも、コンソールベースで起動するときも、 shell=True にする必要はありません。
shell が True の場合、指定されたコマンドはシェルを介して実行されます。
ということで、UACはPythonが表示しているというより、コマンドを渡した先のシェル(コマンドプロンプト)が表示していると思われます。