2012-03-17 10 views
0

レジストリの一部です。何らかの理由で、HKEY_CLASSES_ROOTの下にあるサブキーの束に権限が設定されていません。だから私は、次のような設定キーをキーを経由して、手動でいます:Pythonを使用してWindows XPのレジストリキーのアクセス権を設定する

  1. は、グループとして管理者を追加
  2. 設定管理者が所有者として

潜在的に設定する必要がこれらの何千もあります。それは各キーのために行う10-12ステップのプロセスです。だから、私はPythonを介してプロセスを自動化したい。これらの両方を達成できるモジュールはありますか?

ありがとうございます!

+2

をご覧ください。 –

+0

@JoranBeasleyでは、_winregモジュールの記述が不十分です。それでは、Windowsレジストリに関する一般的な意見もあります。レドモンドの人々は、彼らが完全に理解していない獣を作りました... – Oz123

答えて

1

ほとんど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ではありませんが、動作します。

関連する問題