ほとんど1日の調査の後、私のWindowsレジストリとアクセス許可を使用するソリューションはSetACLを使用することです。 COMオブジェクトを使用するか、バイナリファイルとサブプロセスモジュールを使用できます。
from subprocess import Popen, PIPE
def Is64Windows():
'''check if win64 bit'''
return 'PROGRAMFILES(X86)' in os.environ
def ModifyPermissions():
"""do the actual key permission change using SetACL"""
permissionCommand = r'SetACL.exe -on "HKLM\Software\MPICH\SMPD"'\
+' -ot reg -actn ace -ace "n:Users;p:full"'
permissionsOut = Popen(permissionCommand, stdout = PIPE, stderr = PIPE)
pout, perr = permissionsOut.communicate()
if pout:
print pout
sys.exit(0)
elif perr:
print perr
sys.exit(1)
def main():
... some code snipped ...
os.chdir('SetACL')
if Is64Windows():
os.chdir('x64')
ModifyPermissions()
else:
os.chdir('x86')
ModifyPermissions()
:ここに は、私が混在環境(私はWindows 7およびWindows XPのプロで、32ビットと64ビットと〜50台のWindowsマシンを持っている...)でアクセス許可を変更するために私のコードで使用したものからの抜粋です
それは本当に純粋なPythonではありませんが、動作します。
をご覧ください。 –
@JoranBeasleyでは、_winregモジュールの記述が不十分です。それでは、Windowsレジストリに関する一般的な意見もあります。レドモンドの人々は、彼らが完全に理解していない獣を作りました... – Oz123