問題タブ [pywin32]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
4328 参照

py2exe - Python 2.6 での win32file.pyd のロードに関する問題

win32file を使用する単純なスクリプトでさえ、py2exe を正しくパックすることができません。常に次のエラー メッセージが表示されます。

スクリプトは次のようになります。

そして、ここに setup.py があります:

以前にも同様の問題がありましたか?

バージョン:

ターゲット マシンとしての Python 2.6.2、py2exe 0.6.9、pywin32-214、Windows 7 および Windows XP Pro

アップデート:

  • バンドルされたプログラムは、それが作成された Windows 7 で実行できますが、XP マシンでは実行できません。
  • エラーをスローする win32file.pyc の部分は次のようになります。

    /li>

テスト ボックス (Windows XP) ではエラーが返されますが、開発ボックス (Windows 7) では上記の行が正しく実行されます。

** 更新 2: **

imp.load_dynamic を使用して win32file フォーム python インストールをロードすると、エラーなしで dist フォルダーの win32file.pyd をリロードできます。

0 投票する
10 に答える
38288 参照

python - Windowsのシンボリックリンク?

Python から win32 のバージョン間でシンボリック リンクを作成/読み取る方法を知っている人はいますか? アプリをクロスプラットフォームにする必要があるため、プラットフォーム固有のコードは最小限にするのが理想的です。

0 投票する
5 に答える
1718 参照

python - Pywin32 を使用しない Python での Vista/7 でのシンボリック リンク (mklink) の検出

現在、ビルドアウト レシピ collective.recipe.omelette は、Windows のすべてのバージョンで junction.exe を使用してシンボリック リンクを作成します。ただし、junction.exe は既定では Windows に付属しておらず、最も重要なことに、ファイル (ディレクトリのみ) へのシンボリック リンクの作成をサポートしていないため、かなりの数の Python パッケージで問題が発生します。

NT6+ (Vista および 7) では、mklink ユーティリティがデフォルトで付属するだけでなく、ファイルやディレクトリへのシンボリック リンクを作成できるようになりました。可能な場合はこれを使用するように collective.recipe.omelette を更新したいと思います。それ以外の場合は単純な機能が 1 つあります。ファイルまたはフォルダーが実際にシンボリックリンクであるかどうかを検出します。これは小さなビルドアウト レシピであるため、私の意見では Pywin32 を必要とするのは少し多すぎます (setuptools が Windows でしかダウンロードできない場合を除きます)。

現在 Windows で omelette が行っていることは、フォルダーで junction.exe を呼び出し、"Substitute Name:" の応答を grep することですが、mklink ほど単純なものは見つかりません。

私が考えることができる唯一の方法は、ディレクトリで「dir」を呼び出してから、「<SYMLINK>」と同じ行のフォルダー/ファイル名を探して、応答を1行ずつ調べることです。確かにもっと良いものがありますか?

0 投票する
1 に答える
1388 参照

python - Pythonを介したWMI呼び出しのWindows偽装?

PyWin32 を使用して、django Web アプリケーションから Python でシステムへの WMI 呼び出しを行っています。私の目標は、ユーザーが Web インターフェイス経由でシステムにプリンターを追加できるようにすることです。これを行うために、win32print.AddPrinterConnection を使用しています。

これは、私のユーザーアカウントで開発サーバーを実行するとうまくいきます。必要なすべてのプリンターを追加できます。ただし、最終的には、これは LocalSystem アカウントとして実行される apache の下で実行する必要があります。

これには、次の 2 つの理由で問題があります。

  1. LocalSystem アカウントにはネットワーク特権がまったくなく、これはネットワーク プリンターです。AddPrinterConnection WMI 呼び出しは、最終的に許可されない COM 呼び出しを行います。
  2. LocalSystem アカウントには、これらのプリンターが存在するドメインへのアクセス権がありません。アクセスするにはドメイン アカウントが必要です。

したがって、このタスクを実行するにはドメイン ユーザーを偽装する必要があるという結論に達しました。ここにあるコードを使用してそうしました:

http://code.activestate.com/recipes/81402/

呼び出しコードの偽装に成功したことを確認できるため、これは機能しているようです。残念ながら、なりすましの後、常に win32print.AddPrinterConnection API 呼び出しからこのエラーが発生します。

これがなぜなのか分かりますか?

本当にありがとう!ピート

アップデート

遊んでみると、偽装しているユーザーが現在システムにログインしている場合、AddPrinterConnection API 呼び出しが正常に完了することに気付きました。そのユーザーをログアウトし、そのユーザーになりすましてコマンドを再試行すると、上記のエラーが発生します。

ここで何が起こっているのですか?

0 投票する
4 に答える
38981 参照

python - python win32 拡張機能のドキュメント

http://python.net/crew/skippy/win32/で入手できる python と python win32 拡張機能の両方を初めて使用しますが、win32 拡張機能が正確に何を提供するかについて、オンラインまたはインストール ディレクトリでドキュメントを見つけることができません。この情報はどこにありますか?

0 投票する
2 に答える
2907 参照

python - .exeから.icoを抽出し、PyQtでペイントする最良の方法は?

Pythonを使用して.exeファイルからアイコンを抽出する方法を探しています。win32guiのExtractIconEx関数を使用して.exeのアイコンを取得できることは知っていますが、PyQtを使用してアイコンをペイントしたいので、これはHIconリソースハンドルを返します。

また、win32guiを使用して見た唯一の例には透明性がなく、アイコンが滑らかに見えません。

PythonとPyQtを使用してこれを行うための最良の方法は何でしょうか?

- 編集 -

LukášLalinskýの助けを借りて、この問題は解決されました。これが、私と同じようなことをしようとしている人の最終的なコードです。

0 投票する
2 に答える
2522 参照

python - Updating MS Word (or Open Office) bookmarks with Python

I'd like to fill MSWord bookmarks from a python script. I can't find such functions in win32com(MSWord) or in PyUno(OpenOffice).

Does anyone know how to use bookmarks from Python?

0 投票する
3 に答える
1154 参照

python - Python の Windows では、Outlook API を使用している可能性がありますが、小さい方のログイン名からユーザーのフル ネームを取得するにはどうすればよいですか?

職場では、短いログイン名 (例: hastingsg) を使用していますが、Outlook と Windows システムの他の部分も長い名前 (例: Jeff Hastings) にアクセスできると思います。

cpython (IronPython ではない) で、ログイン名が短い場合、フルネームを長くするにはどうすればよいですか? pywin32ExchangeCDOがインストールされています。

0 投票する
2 に答える
4098 参照

python - Python Windows サービスの問題 - デバッグ引数を使用すると機能しますが、サービスとして開始すると機能しませんか?

うまくいけば、ここの誰かが私の問題に光を当てることができます:D

選択した Windows/アプリケーション/サービス設定を監視/修復するように設計された Python で Windows XP サービスを作成してきましたが、デフォルトの DCOM 設定に焦点を当てています。

アイデアは、参照用に別のレジストリ キー内の既定の構成をバックアップすることです。30 分ごと (現在はテストのため 30 秒ごと) に、サービスで現在の Windows の既定の DCOM 設定をレジストリからクエリし、結果を既定の構成と比較したいと考えています。不一致が見つかった場合、サービスは現在の Windows 設定をカスタム構成設定に置き換えます。

レジストリのチェック/修復を処理するクラスを既に作成/テストしており、これまでのところ問題なく実行されています.exeにコンパイルしてサービスとして実行するまで。

サービス自体は正常に起動し、定義どおりに 30 秒ごとにループしているように見えますが、レジストリのチェック/修復を処理するモジュールが指定どおりに実行されていないようです。

ログ ファイルを作成したところ、次のエラーを取得できました。

トレースバック (最新の最後の呼び出し):
ファイル "DCOMMon.pyc"、52 行目、RepairDCOM
ファイル "DCOMMon.pyc"、97 行目、GetDefaultDCOM
ファイル "pywmi.pyc"、396 行目、呼び出し
ファイル "pywmi.pyc" 内、189 行目、handle_com_error
x_wmi: -0x7ffdfff7 - 例外が発生しました。
エラー: SWbemObjectEx
-0x7ffbfe10 -

サービスを停止し、デバッグ引数DCOMMon.exe debugを指定して exe を手動で実行すると、サービスが起動して正常に実行され、すべてのタスクが期待どおりに実行されます。私が見ることができる唯一の違いは、サービスがログオンしたユーザーではなくSYSTEMユーザーとしてプロセスを開始することです. 別のユーザーとしてサービスの実行をテストしましたが、違いはありませんでした。

他の考えは、私のサービスの依存関係にwmiサービスを追加することでしたが、正直なところ、それが何をするのかわかりません:P srvany.exeのようなものを使用せずに、PythonでWindowsサービスを作成しようとしたのはこれが初めてです.

昨夜と今日の大部分をグーグルで検索して、py2exeとwmiの互換性に関する情報を見つけようとしましたが、これまでのところ、私が見つけた提案は上記の問題の解決には役立っていません.

任意の提案をいただければ幸いです。

PS: 貧弱なロギングで私を憎まないでください。別のスクリプトからロガーをカット/ペーストしましたが、適切な変更を加えていません。各行が 2 倍になる可能性があります :P. ログ ファイルは次の場所にあります: "%WINDIR%\system32\DCOMMon.log"

アップデート

このプロジェクトを 1 つではなく 2 つの exe ファイルに分割しようとしました。wmi レジストリ部分を実行するために、サービスに他の exe への外部呼び出しを行わせます。繰り返しますが、デバッグ引数を使用して実行すると問題なく動作しますが、サービスとして開始すると同じエラー メッセージがログに記録されます。ますますこれは、プログラムの問題ではなく、許可の問題のように見え始めています:(

アップデート

DCOMMon.py - pywin32、wmi (pywmi に名前変更)、

DCOMMon_setup.py - py2exe が必要です (自己実行可能、py2exe arg は不要)

0 投票する
1 に答える
1361 参照

python - Get process argument info in windows with python/pywin32?

In linux, I know with 'ps' you can get the arguments that a command was run with. I need the equivalent in windows

Right now in python I'm doing
Process[i] = subprocess.Popen(cmd + " --daemon --config " + str(i) + ".conf", shell=False)

But I'm doing this in a daemon that is meant to be up all (or most) of the time. Since I'm having to debug and modify this daemon regularly it's starting up 3 processes; but when I shut it down, the processes stay up. (like should happen, just in case)...

When I start it back up again, I need to re-map the PID to the config file used by the processes that already exist, but I don't know of any way of retrieving this information (and parsing it) in windows. Does such a thing exist?