2009-12-04 15 views
6

Quando si tenta di eseguire regasm in Win2008 Server:Problema registrazione di una dll - Accesso negato

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

ottengo il seguente errore:

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

cosa significa questo

+0

Sembra che tu non abbia accesso a scrivere roba nella cache di assembly globale. Stai correndo come utente standard? E lo spazio su disco? Installazione precedente in attesa di finire? – Craig

+0

In base alla mia esperienza, se si sta tentando di sviluppare qualcosa da eseguire su un server 2008, è necessario rinunciare prima di iniziare a risparmiare tempo/denaro/e mal di testa perché i diritti di sicurezza non rientrano nei grafici di quel SO. – Jrud

+0

sì - avrei dovuto eseguire cmd.exe come Adminstrator. duh! – Vidar

risposta

9

L'account con cui si esegue il regashare non ha i diritti per scrivere in C: \ Programmi \ FooProg \ ed è per questo che il regasm non scrive il file .tlb. Esegui il regresso con un account con privilegi di amministratore.

3

L'account stanno usando i privilegi di amministratore.

1

Questo errore si presenta in modo improbabile perché non è possibile eliminare un file .tlb corrispondente. Altri due suggerimenti: 1. Arrestare IIS e tentare di registrarsi di nuovo: 2. Arrestare IIS, rimuovere i file .tlb da qualunque luogo si trovi il file DLL e quindi tentare di registrarsi nuovamente.

11

Questo errore si presenta in modo improbabile perché non è possibile eliminare un file .tlb corrispondente. Altri due suggerimenti:

  1. Arrestare IIS e tentare di registrare di nuovo:
  2. Arrestare IIS, rimuovere .tlb file da ovunque il file DLL è e poi tentano di registrare di nuovo.
  3. Chiudere tutti gli strumenti/IIS/dev IE (che potrebbe essere mantenendo alcuni file in sola lettura) e quindi tentare di registrare la DLL
+0

chiusura IDE risolto il mio problema, grazie! – StarCub

+1

+1 Questo mi ha aiutato a trovare il problema. Ho accidentalmente aggiunto un "\" dopo il nome di tlbfile e ha creato una cartella con lo stesso nome del file tlb. La rimozione della cartella ha risolto il problema. – surfen

+0

Grazie per aver condiviso questa conferma. Quella cartella aggiuntiva deriverebbe sicuramente dalla tua esecuzione. –

1

Nel mio caso sia la dll e file TLB sono stati ReadOnly rimuovendo il controllo ReadOnly ha funzionato per me, inoltre ho chiuso il processo che lo stava usando come (IDE di Visual Studio).

+0

+1 Non l'ho rimosso pronto solo nel mio caso ma ho appena cancellato il file .tlb ma sfogliando solo lettura probabilmente avrei fatto la stessa cosa per me dato che stavo già usando i privilegi amministrativi. –

0

Prima ho dovuto rimuovere tutti gli spazi nel percorso della mia DLL prima che il regams trovasse il file dll.

Ma quando ho provato con le virgolette attorno agli obiettivi, ha funzionato comunque.

1

È inoltre possibile ottenere questo problema se non si specifica un percorso completo nell'argomento /tlb.

Si tenterà di scrivere su C:\windows\system32. Anche se si esegue come amministratore, per impostazione predefinita non si dispone dei diritti per scrivere in quella directory.

La soluzione consiste semplicemente nel fornire un percorso completo (a una directory di cui si dispone dei diritti) nell'argomento /tlb.

1

È più probabile che si verifichi l'errore a causa di un processo con hook nel file .dll o .tlb che si sta tentando di registrare o copiare. Riavvia il computer e riprova oppure elimina il file .tlb e ricostruilo per assicurarti di poterlo accedere.

0

Win 7 (se già amministratore) - È possibile abilitare le autorizzazioni per il file facendo clic con il pulsante destro del mouse e accedere alle proprietà, scheda sicurezza, fare clic su modifica, verificare le autorizzazioni, ad es. Pieno controllo.

1

Ho avuto un processo di dllhost.exe. L'uccisione mi ha permesso di eliminare il file .tlb e registrarmi di nuovo. Altri approcci (Arresto di IIS, arresto dei pool di applicazioni, chiusura di tutti gli IDE) non hanno avuto alcun effetto.