2016-03-29 10 views
1

Ich versuche, mehrere DLL-Dateien zu registrieren, um ein Programm arbeiten zu lassen. Ich bin jedoch ein großes Problem:Problem Registrierung oder Kopieren einer Datei aus Programmdateien auf system32

ich eine Batch-Datei aus, die alle DLL-Dateien mit

auf einmal registriert
for %x in ("%programfiles(x86)%\folder\*.dll") do regsvr32 %x 

und ich bekomme das folgende Fehlermehrfach:

The module "C:\Program" failed to load... 

Ich habe auch versucht, diese Dateien nach system32 zu kopieren und sie dann dort zu registrieren, aber die gleiche Fehlermeldung zu haben.

Gibt es einen Weg, wie ich es endlich zum Laufen bringen kann? Vielen Dank!

Antwort

2

Durch Zufall, von %x meinst du %%x für Batch-Dateien?

Und eine allgemeine Sicherheitsspitze, entkommen die Klammern in den Weg mit ^, etwa so:

for %%x in ("%programfiles^(x86^)%\folder\*.dll") do regsvr32 "%%~x" 

edit: hinzugefügt Anführungszeichen %%x Parameter für Note des @ mofi.

+0

Ich habe versucht, %% x, wie Sie vorgeschlagen, und ich bekomme die Warnung "%% X wurde nicht erwartet". Es herauszunehmen, passiert nichts. –

+3

Wenn Sie es direkt in der Befehlszeile ausführen, verwenden Sie ein Prozentzeichen: '% x'. Wenn es in einer .bat-Datei ist, müssen Sie zwei verwenden: '%% x', weil es aus irgendeinem Grund, wenn es aus einer Batch-Datei ausgeführt wird, zuerst den Ausdruck auswertet, der' %%' in '% 'ändert. – LinuxDisciple

+0

Es besteht keine Notwendigkeit, den Klammern bei '(x86)' zu entkommen, da sie zwischen '' '' liegen; Sie sollten "%% ~ x" anstelle von "%% x" schreiben, um Doppel-Anführungszeichen zu vermeiden. vielleicht wäre "%% ~ fx" 'sogar besser, so dass Sie Ihre Batch-Datei von überall ausführen können, wo Sie möchten ... – aschipfl

3

Sie müssen doppelte Anführungszeichen um %x setzen, da der Dateipfad Leerzeichen enthält.

Befehlszeile:

for %x in ("%ProgramFiles(x86)%\folder\*.dll") do %SystemRoot%\System32\regsvr32.exe "%x" 

Batch-Datei:

for %%x in ("%ProgramFiles(x86)%\folder\*.dll") do %SystemRoot%\System32\regsvr32.exe "%%x" 

Run in einer Eingabeaufforderung Fenster for /? und alle Hilfeseiten Ausgabe lesen.

+0

Ich habe Ihren Vorschlag verwendet und es hat funktioniert! Allerdings bekomme ich jetzt ein paar Fehler, weil das Programm die Datei laden, aber nicht registrieren kann. Was kann ich dagegen tun? –

+0

Ich kann diese neue Frage nicht ohne Insiderwissen von Anwendungscode und verwendeten DLLs beantworten. Im Allgemeinen ist es kein gutes Zeichen, wenn die DLLs einer Anwendung manuell mit 'regsvr32' registriert werden müssen. Dies sollte vom Installationsprogramm der Anwendung oder von der Anwendung selbst durchgeführt werden. Das Registrieren von DLLs in 'HKLM \ Software \ Classes' erfordert Schreibberechtigungen, d. H. Das Konto 'Administrator' oder' TrustedInstaller' muss verwendet werden. Sie könnten Ihre Batch-Datei * als Administrator * ausführen und sehen, ob das hilft. – Mofi

+0

Nun, es geht so: Dieses Programm wurde von der mexikanischen Regierung gemacht, um Rechnungsverfahren zu erleichtern. Ich mache ein Programm für eine Firma, um Wiegeverfahren und Tickets zu erleichtern. Diese Tickets werden normalerweise vom Programm der Regierung gemacht, aber ich bin beauftragt, die Bewegung automatisch in meinem Programm zu machen. Ich habe viel geforscht und es kann gemacht werden.Ich arbeite an einem Beispielprogramm, das von den Programmierern bereitgestellt wird, aber ich kann nicht arbeiten, da die DLL nicht geladen wird:/ –