私は次のコードを使おうとしました:
cd c:\windows\system32
regsvr32.exe dllname.ax
しかし、これは私のために働いていません。 64ビットプロセッサを搭載したWindows 7でDLLファイルを登録する方法を教えてください。
コマンドプロンプトにregsvr32 name.dll
と入力し(昇格モードで実行されます)、 "Enter"を押します。 name.dll
は、登録するDLLの名前に置き換えてください。たとえば、iexplore.dllを登録する場合は、regsvr32 iexplore.dll
と入力します。
まあ、それが32ビットDLLか64ビットDLLかを指定せず、エラーメッセージを含めませんが、このKB記事で説明されているのと同じ問題だと思います: エラーメッセージ64ビットWindowsでRegsvr32.exeを実行
その記事からの引用:
この現象は、System32フォルダー内のRegsvr32.exeファイルが64ビットバージョンであるために発生します。 Regsvr32を実行してDLLを登録するとき、デフォルトでは64ビットバージョンを使用しています。
その記事からの解決策:
この問題を解決するには、%SystemRoot%\ Syswow64フォルダーからRegsvr32.exeを実行します。たとえば、次のコマンドを入力してDLLを登録します。
cd \windows\syswow64
regsvr32 c:\filename.dll
DLLが32ビットの場合
DLLをC:\ Windows\SysWoW64 \にコピーします。
raised コマンドのプロンプトで:%windir%\SysWoW64\regsvr32.exe %windir%\SysWoW64\namedll.dll
DLLが64ビットの場合
DLLをC:\ Windows\System32 \にコピーします。
raised コマンドのプロンプトで:%windir%\System32\regsvr32.exe %windir%\System32\namedll.dll
私はそれが間違ったやり方であるように思えますが、それはそれが働く方法です。見る:
http://support.Microsoft.com/kb/249873
引用: "64ビット版のWindowsオペレーティングシステムでは、Regsv32.exeファイルには2つのバージョンがあります。
64ビットバージョンは%systemroot%\ System32\regsvr32.exeです。
32ビットバージョンは%systemroot%\ SysWoW64\regsvr32.exeです。
"
X64システムでは、system32は64ビット用、syswow64は32ビット用です(別の回答で述べたように、その逆ではありません)。 WOW(Windows on Windows)は、64ビットサブシステムの下で動作する32ビットサブシステムです。
それは命名の面では混乱であり、混乱させるだけの役目を果たしますが、それがそのままです。
また….
syswow64は32ビットで、64ビットではありません。
system32は64ビットで、32ビットではありません。
これらの各ディレクトリにregsrv32があります。 1つは64ビット、もう1つは32ビットです。それはodbcad32と他と同じ扱いです。 (32ビットの _ odbc _ ドライバがsystem32のデフォルトのodbcad32(64ビット)で表示されない場合)
スタートメニューを開き、検索ボックスに「cmd」と入力しますCtrl + Shiftを押しながらEnterを押します
これにより、コマンドプロンプトが管理者モードで実行されます。
今入力します。regsvr32 MyComobject.dll
最後に、私は管理者としてCMDを実行し、それから次のように書くだけの解決策を見つけました。
cd \windows\syswow64
それからこれを書く
regsvr32 c:\filename.dll
その答えがあなたのお役に立てばと思っています。
DLLが32ビットの場合:
DLLが64ビットの場合:
ここのすべてが間違った道として失敗していました。それから私は昔のWin95日からのトリックを思い出しました。 .dllが存在するプログラムフォルダを開き、C:/ Windows/System32を開いてregsvr32までスクロールし、プログラムフォルダからdgsをrgsrver32にドラッグアンドドロップします。ブーム、完了。
そして、これをしながら、エラーコード0x80040201を得た場合、DllRegisterServerはエラーコード0x80040201で失敗しましたが、確かめてください、あなたはコマンドPrompt as Run as Administrator)を開いてください。
エラーメッセージを知ることはかなり有益です。情報を提供することを目的としていますが、それはあなたには意味がありませんが、私たちには意味があります。推測を余儀なくされて、私はDLLが32ビットDirectXフィルタであると言うでしょう。その場合、これは正しい行動方針であるはずです。
cd c:\windows\syswow64
move ..\system32\dllname.ax .
regsvr32.exe dllname.ax
UACが必要なレジストリアクセスを停止できないように、これは昇格されたコマンドプロンプトで実行する必要があります。 superuser.comでこれについてもっと質問する
cmd.exe
をc:\windows\system32\ by administrator
で実行する必要があります
コマンド: 登録解除の場合 * .dllファイル
regsvr32.exe /u C:\folder\folder\name.dll
登録用 * .dllファイル
regsvr32.exe C:\folder\folder\name.dll
私はこの非常に単純な方法をテストしました そしてそれは完璧に動作します - しかし私はビルトインAdministratorアカウントを使用するので、私は昇格された特権のためにフープを飛び越える必要はありません。
次のバッチファイルは、システムフォルダにファイルを移動する必要性からユーザーを解放します。また、適切なバージョンのRegsvr32
を適用することはWindowsに任されています。
注意事項
登録したいライブラリ(-.dll
または-.ax
)ファイルが入っているフォルダーに、新しいテキストファイルを開き、以下のいずれかのルーチンを貼り付けます。
echo BEGIN DRAG-AND-DROP %n1 REGISTRAR FOR 64-BIT SYSTEMS
copy %1 C:\Windows\System32
regsvr32 "%nx1"
echo END BATCH FILE
pause
echo BEGIN DRAG-AND-DROP %n1 REGISTRAR FOR 32-BIT SYSTEMS
copy %1 C:\Windows\SysWOW64
regsvr32 "%nx1"
echo END BATCH FILE
pause
新しいテキストファイルをバッチ(-.bat
)ファイルとして保存します。次に、-.dll
または-.ax
ファイルをバッチファイルの上にドラッグアンドドロップします。
UACでバッチファイルを管理者として実行することができない場合は、手動で特権を昇格する必要があります(手順はWindows 7用です)。
Create shortcut
を選択してください。Properties
を選択してください。Compatibility
タブをクリックしてください。Run this program as administrator
というラベルの付いたボックスをチェックします。-.dll
または-.ax
ファイルをバッチファイルの代わりに新しいショートカットの上にドラッグアンドドロップします。これで終わりです 。COPY
の代わりにMOVE
を選びました。これは、UAC関連のフォローアップの試みが失敗するのを防ぐためです。登録が成功したら、元のライブラリ(-.dll
または-.ax
)ファイルを削除します。
心配しないでください 前回のパスでシステムフォルダ(C:\Windows\System32
またはC:\Windows\SysWOW64
)に作成されたコピーについて - バッチファイルを実行するたびに上書きされます。
間違ったバッチファイルを実行したのでない限り 、その場合は、適切なバッチファイルを実行する前に、間違ったシステムフォルダ(C:\Windows\System32
またはC:\Windows\SysWOW64
)に作成したコピーを削除します。 、...または...
Windowsがディレクトリの場所を完全修飾することによって登録する正しいライブラリファイルを選択するのを助けます。
C:\Windows\System32
C:\Windows\SysWOW64
%nx1
の前にくるように次の行に貼り付けます。regsvr32 "C:\Windows\System32\%nx1"
regsvr32 "C:\Windows\SysWOW64\%nx1"
%nx1
を分けるためにバックスラッシュを挿入しますこのショットガンバッチファイルを実行します。
C:\Windows\System32
にコピーします。C:\Windows\System32
からあなたのライブラリファイルを削除してください。C:\Windows\SystemWOW64
にコピーしますWindows 7には違いがあります。管理者としてログオンすることは=ではありません管理者としてプログラムを実行するときと同じ権限を与えます。
スタート - すべてのプログラム - アクセサリに移動します。 [コマンド]ウィンドウを右クリックして[管理者として実行]を選択します。通常どおりDLLを登録します。regsrvr32 xxx.dll
Regsvr32に関する混乱の一部は、64ビットウィンドウでは名前とパスが変更されていないことですが、現在は64ビットDLLを登録しています。 32ビットのregsvr32はSysWOW64に存在します。これは64ビットのアプリケーションを表すように見えます。ただし、名前のWOW64は、Windows 64上のWindows、またはWindows 64ビット上のより具体的にはWindows 32ビットを指します。このように考えると、この文脈で混乱していても名前は意味があります。
MSDNブログで私のオリジナルのソースを見つけることができませんが、それはこのウィキペディアの記事で参照されています http://en.wikipedia.org/wiki/WoW64
Win7 x 64マシンでこの問題を解決する方法は次のとおりです。
CoCreateInstance()が失敗しましたPlkeaseのレジストリエントリCLSID {F088EA74-2E87-11D3-B1F3-00C0F03C37D3}を確認し、管理者としてログインしていることを確認してください
お役に立てれば !