私はPythonでユーザーのHWIDを取得するための短いスクリプトを作成しています。 Pythonをインストールしていないコンピュータではスクリプトを実行できないので、pyinstallerを使って.exeファイルに変換しました。別のコンピュータにpyinstaller .exeファイルを実行しているときに.dllが見つからない
ここThe procedure entry point ucrtbase.terminate could not be located in the dynamic link library api-ms-win-crt-runtime-l1-1-0.dll.
がある私は.exeファイルに変換する方法:私は私のラップトップ上で.exeファイルを実行しようとしたとき
しかし、それはエラーメッセージを表示します(Windowsの究極の7を実行しているとPythonがインストールされていません) 、ちょうどin-case私は間違っているよ。
コード:
import subprocess
import hashlib
import time
def addToClipBoard(text):
command = 'echo ' + text.strip() + '| clip'
os.system(command)
x = subprocess.check_output('wmic csproduct get UUID') #gets UUID from pc
x = x[42:] # removes unnecessary parts of string
x = x[:-9] # removes unnecessary parts of string
hash_object = hashlib.sha512(x) # Converts to sha512 hash
hex_dig = hash_object.hexdigest() # Converts hash to hex-decimal string
os.system("title HWID tool")
os.system("color 4e")
print("Your protected hardware ID is")
print(hex_dig)
time.sleep(3)
print("This has been automatically saved to your clipboard.")
addToClipBoard(hex_dig) #saves hex decimal string to clipboard.
私がCMDに行くよりも、正しいディレクトリに確認イムを作成し、これを実行します。
注:私のラップトップで.exeファイルを実行するとエラーが発生します。コンピュータで実行しているときにエラーが表示されず、.exeに変換されました。
私はそれをコンパイルしたコンピュータとラップトップはどちらも64bit、Windows 7の究極のマシンです。
EDIT:私の友人のコンピュータで動作しますが、Pythonがインストールされています。
このエラーが発生する理由と解決方法を教えてください。
エラーメッセージはあまり明確ではありません。 DLLが完全に見つからないか、または存在しますが、シンボルをエクスポートできませんか?あなたのWindows 7マシンにすべてのWindowsアップデートをインストールしましたか? – IInspectable
Windows 7では、CRT APIセットは実際のDLL(Windows 10では仮想)であり、エクスポートされた関数をucrtbase.dllの実装に転送します。おそらく、PyInstallerがucrtbase.dllをインクルードするほどスマートではなかったように見えます。何らかの理由で、Windows 7のラップトップがユニバーサルCRTアップデートで最新ではない場合があります。マイクロソフトでは、このCRTをWindows Vista、7、および8(XPではなく)のOSコンポーネントとして自動的に更新しています。 – eryksun