2009-12-04 9 views
6

Beim Versuch regasm in Win2008 Server auszuführen:Problem Registrierung einer dll - Zugriff verweigert

regasm "C:\Program Files\FooProg\Bar.dll" /tlb:"C:\Program Files\FooProg\Bar.tlb" 

ich die folgende Fehlermeldung erhalten:

RegAsm : error RA0000 : An error occurred while saving the exported type library: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

was diese

+0

Sieht so aus, als hätten Sie keinen Zugriff darauf, Dinge in den globalen Assemblycache zu schreiben. Laufen Sie als Standardbenutzer? Wie steht es mit Speicherplatz? Vorherige Installation wartet auf den Abschluss? – Craig

+0

Meiner Erfahrung nach sollten Sie, wenn Sie etwas entwickeln wollen, um auf einem Server 2008 zu laufen, einfach aufgeben, bevor Sie damit beginnen, Zeit/Geld/Kopfschmerzen zu sparen, da die Sicherheitsrechte aus den Diagrammen dieses Betriebssystems herausfallen. – Jrud

+0

yep - Ich hätte cmd.exe als Adminstrator ausführen sollen. Duh! – Vidar

Antwort

9

Der Account, unter dem Sie regasm ausführen, hat keine Rechte, in C: \ Programme \ FooProg \ zu schreiben, und deshalb schreibt regasm nicht die .tlb. Führen Sie regasm unter einem Konto mit Administratorrechten aus.

3

bedeutet das Konto benötigen Administratorrechte.

1

Dieser Fehler tritt am wahrscheinlichsten auf, weil Sie eine entsprechende TLB-Datei nicht löschen können. Zwei weitere Vorschläge: 1. Stoppen Sie IIS und versuchen Sie erneut, sich zu registrieren: 2. Stoppen Sie IIS, entfernen Sie .tlb-Dateien von wo auch immer sich Ihre DLL-Datei befindet und versuchen Sie dann erneut, sich zu registrieren.

11

Dieser Fehler tritt am wahrscheinlichsten auf, weil Sie eine entsprechende TLB-Datei nicht löschen können. Zwei weitere Vorschläge:

  1. Stopp IIS und versuchen, erneut zu registrieren:
  2. Stopp IIS, entfernen Sie TLB-Dateien von überall dort, wo die DLL-Datei ist und dann versuchen, wieder zu registrieren.
  3. Schließen Sie alle IE/IIS/DEV-Tools (sie könnten einige Dateien in Nur-Lese-Zustand werden zu halten) und dann versuchen, die DLL
+0

Schließen der IDE hat mein Problem gelöst, danke! – StarCub

+1

+1 Dies half mir, das Problem zu finden. Ich habe versehentlich einen "\" nach tlbfile Name hinzugefügt und es erstellt einen Ordner mit dem gleichen Namen wie TLB-Datei. Durch das Entfernen des Ordners wurde das Problem behoben. – surfen

+0

Danke für das Teilen dieser Bestätigung. Dieser zusätzliche Ordner würde Ihre Ausführung definitiv entgleisen. –

1

In meinem Fall sowohl die DLL und TLB-Datei registrieren wurden Readonly das Entfernen des ReadOnly-Checks funktionierte für mich, außerdem habe ich den Prozess geschlossen, der es benutzte (Visual Studio IDE).

+0

+1 Ich habe nicht nur in meinem Fall fertig gelöscht, sondern einfach die .tlb-Datei gelöscht, aber das reverse-Lesen hätte wahrscheinlich das Gleiche für mich getan, da ich bereits mit administrativen Rechten gearbeitet habe. –

0

Zuerst musste ich alle Leerzeichen im Pfad zu meiner DLL entfernen, bevor regasm die DLL-Datei gefunden hat.

Aber wenn ich mit Anführungszeichen um die Ziele versuchte, funktionierte es überhaupt.

1

Sie können dieses Problem auch erhalten, wenn Sie im Argument /tlb keinen vollständigen Pfad angeben.

Es wird versuchen, C:\windows\system32 zu schreiben. Selbst wenn Sie als Administrator ausgeführt werden, haben Sie standardmäßig keine Rechte, in dieses Verzeichnis zu schreiben.

Die Lösung besteht einfach darin, einen vollständigen Pfad (in ein Verzeichnis, zu dem Sie Rechte haben) im /tlb-Argument anzugeben.

1

Mehr als wahrscheinlich erhalten Sie den Fehler aufgrund eines Prozesses mit Haken in der DLL oder TLB-Datei, die Sie registrieren oder kopieren möchten. Starten Sie Ihren Computer neu und versuchen Sie es erneut oder löschen Sie die TLB-Datei, und erstellen Sie sie erneut, um sicherzustellen, dass Sie darauf zugreifen können.

0

Win 7 (wenn bereits Administrator) - Sie können Berechtigungen für die Datei durch Rechtsklick und Zugriff auf Eigenschaften, Registerkarte Sicherheit, klicken Sie auf Bearbeiten, überprüfen Sie die Erlaubnis für die Berechtigungen, z. Volle Kontrolle.

1

Ich hatte einen streunenden dllhost.exe Prozess. Durch das Töten konnte ich die .tlb-Datei löschen und neu registrieren. Andere Ansätze (Beenden von IIS, Beenden von Anwendungspools, Schließen aller IDEs) hatten keine Auswirkungen.