2011-10-28 13 views
1

comtypes/ctypesを使用してショートカットを作成してスタートアップフォルダに保存するPythonプログラムを作成しました。開発モードではすべて機能しますが、py2exeを使用してプログラムをビルドして実行すると、次のエラーが発生します。ショートカットをWindows XPのスタートアップフォルダに保存できません "アクセスが拒否されました" comエラー

(-2147024891、 'アクセスが拒否されました'、(None、None、None、0、None))

OSはWinXPのSP3で、 コードは次のようになります:

shellObj = CreateObject(ShellLink) 
shortcut = shellObj.QueryInterface(IShellLinkW) 
shortcut.SetWorkingDirectory(os.path.dirname(sys.executable)) 
shortcut.SetPath(link_target) 
shortcut.SetDescription(link_desc) 
pf = shellObj.QueryInterface(IPersistFile) 
Try: 
    pf.Save(link_loc + link_file_name, True) 
except Exception as ex: 
    print ex 
finally: 
    pf.Release() 
    shortcut.Release() 

私はスタートアップ以外の任意の通常のフォルダへのショートカットを解決しない場合

、何ら問題は発生しません。

答えて

1

解決済み、問題は、コモドのセキュリティセンターが上記のフォルダへのアクセスをブロックしていたことです。だから私は、信頼リストにアプリを追加しました。 R6034エラーのためとして、私はちょうどpy2exeマニフェストXMLセクションに次のように埋め込むすることを確認する必要がありました:

<dependency> 
    <dependentAssembly> 
     <assemblyIdentity 
      type="win32" 
      name="Microsoft.VC90.CRT" 
      version="9.0.21022.8" 
      processorArchitecture="x86" 
      publicKeyToken="1fc8b3b9a1e18e3b"> 
     </assemblyIdentity> 
    </dependentAssembly> 
    </dependency> 

とexeファイル(のSxS構成)と同じインストールフォルダにmsvcr90.dllとmsvcp90.dllを追加しますバージョンとpublicKeyTokenが、通常これらのdllにバンドルされているMicrosoft.VC90.CRT.manifestファイルに記述されているものと正確に一致することを確認します。 Visual Studioがインストールされていません。

0

管理者権限でpy2exeプログラムを実行します。

+0

http://stackoverflow.com/questions/195109/running-compiled-python-py2exe-as-administrator-in-vistaのようにマニフェスト情報の文字列を追加しましたが、これで実行可能ファイルを実行できませんエラー:R6034、アプリケーションがCランタイムライブラリを間違って読み込もうとしました。... –

+0

さらに、私はすでにpy2exeを実行するためにadminアカウントを使用しています –

+0

そして、これらのエラーは、それ? –

関連する問題