Microsoft.Jet.OLEDB.4.0′-provider is niet geregistreerd op de lokale computer

Ik heb een Windows-toepassing gemaakt die is ontwikkeld in .NET 3.5 op een 32-bits Windows 2008-server. Wanneer de toepassing op een 64-bits server wordt geïmplementeerd, wordt de fout “Microsoft.Jet.OLEDB.4.0′ provider is niet geregistreerd op de lokale computer” weergegeven.

Dus als oplossing voor dit probleem heb ik de build-eigenschap van het project gewijzigd in X86, zodat het in 32-bits modus wordt gebouwd en het project opnieuw wordt opgebouwd op de 32-bits machine. Maar hetzelfde project gebruikt andere DB-stuurprogramma’s (DB2, SQL enz.) om verbinding te maken met andere databases. Dus toen ik mijn app opnieuw implementeerde in het 64-bits besturingssysteem, genereert deze de uitzondering ” Poging om een 64-bits assembly op een 32-bits platform te laden. “

Ik gebruik het Microsoft.Jet.OLEDB.4.0-stuurprogramma om te lezen en schrijven naar Excel (.xls)


Antwoord 1, autoriteit 100%

Ik heb een oplossing voor dit probleem gevonden. Het probleem dat ik in mijn vraag beschreef, deed zich voornamelijk voor vanwege de incompatibiliteit van het Microsoft.Jet.OLEDB.4.0-stuurprogrammain 64-bits besturingssysteem.

Dus als we Microsoft.Jet.OLEDB.4.0-stuurprogramma gebruiken in een 64-bits server, moeten we onze applicatie dwingen om in 32-bits modus in te bouwen (dit is het antwoord dat ik vond toen ik hier uitgebreid naar zocht bekend probleem) en dat zorgt ervoor dat een ander deel van mijn code kapot gaat.

Gelukkig heeft Microsoft nu een 64-bits compatibel 2010 Office System Driveruitgebracht, dat kan worden gebruikt als vervanging voor het traditionele Microsoft.Jet.OLEDB.4.0-stuurprogramma. Het werkt zowel in 32-bits als 64-bits servers. Ik heb het gebruikt voor het manipuleren van Excel-bestanden en het werkte prima voor mij in beide omgevingen. Maar dit stuurprogramma bevindt zich in BETA.

U kunt dit stuurprogramma downloaden van Microsoft Access Database Engine 2010 herdistribueerbaar


Antwoord 2, Autoriteit 49%

Als het probleem volhoudt in ASP.NET, was alles wat ik moest doen, de instelling “Inschakelen 32-bits toepassingen inschakelen, in de geavanceerde instellingen voor de toepassingspool instellen.


Antwoord 3, Autoriteit 24%

Ik heb hetzelfde probleem

Microsoft.jet.oledb.4.0 ‘Provider is niet geregistreerd op de lokale
machine

Ik heb het antwoord toegepast door Neo , maar het werkte niet totdat ik de provider veranderde tot “Provider = Microsoft.ace.oledb.12.0; in verbindingsreeks.

Ik hoop dat dit zal helpen als iemand hetzelfde is voor hetzelfde probleem.


Antwoord 4, Autoriteit 14%

Ik weet dat het vrij oude vragen is en veel personen hebben beantwoord. Maar ik vat de dingen samen voor begrip:

Als de bestandsextensie XLS en OS is 32 bit, dan kunt u alleen “Microsoft.Jet.OLEDB.4.0” gebruiken. Microsoft heeft geen 64-bits versie van deze driver uitgebracht.

Als bestandsextensie XLSX of OS is 64 bit, moet u “Microsoft.ACE.OLEDB.12.0” moeten gebruiken. De toepassing in 32/64 bitmodus heeft geen invloed op de selectie van bestuurder.

Installeer altijd de 64-bits stuurprogramma van Microsoft.ACE.OLEDB.12.0op OS 64-bit. Als u het Office 32-bits al hebt geïnstalleerd, moet u driver van CMD met / passiefargument uitvoeren. Deze hack werkt alleen tot Office 2013, Microsoft stopte deze workaround vanaf Office 2016 voor Microsoft.ace.oledb.16.0-stuurprogramma’s.

AccessDatabaseEngine_x64.exe /passive

Stuurprogramma’s downloaden Microsoft.ACE.OLEDB.12.0

private void ProcessFile(string path)
{
    string connString = string.Empty;
    if (Path.GetExtension(path).ToLower().Trim() == ".xls" && Environment.Is64BitOperatingSystem == false)
        connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
    else
        connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
}

Als de toepassing is gecompileerd met de AnyCPU-vlag, zoekt deze naar 64-bits Access-stuurprogramma’s op 64-bits besturingssysteem en 32-bits toegangsstuurprogramma’s op 32-bits besturingssysteem.


Antwoord 5, autoriteit 8%

Als uw toepassing op localIIS draait, kunt u dit probleem oplossen door 32-bits toepassingen in te schakelenin Geavanceerde instellingen

van AppPool


Antwoord 6, autoriteit 8%

Ik heb hetzelfde bericht, ik heb een webpagina met do op visual studio 2010, ik lees een file.xls op die pagina, in mijn project heeft visual geen probleem, als ik het op mijn IIS-local zet, gooi me een ‘Microsoft.Jet.OLEDB.4.0′-provider is niet geregistreerd op de lokale computer’
,Ik heb dat probleem vervolgens opgelost door deze stappen te volgen,

1.-IIS openen
2.-Wijzig de appPool op Geavanceerde instellingen
3.-true om in te schakelen voor 32-bits toepassing.

en dat is alles

ps.Ik heb Configuration Manager gewijzigd in X86 op Active Solution Platform


Antwoord 7, autoriteit 3%

Ik had hetzelfde probleem. Ik heb de applicatieconfiguratie gewijzigd in x86, en toen werkte het!


Antwoord 8, autoriteit 3%

Ik heb zojuist mijn eigenschap van project gewijzigd in x64-indeling

Project—> Eigenschappen—>Build—>Target Framework—> X64


Antwoord 9, autoriteit 2%

We zijn dit probleem tegengekomen in de desktop-app.

Ontwikkelomgeving:
Windows 7 Ultimate – 64 bit
.Net Framework 4.5
Provider=Microsoft.Jet.OLEDB.4.0

Het is opgelost door Platformdoel te wijzigen in X86 vanaf Elke CPU.
Projecteigenschappen >> Bouw >> Platformdoel.


Antwoord 10

Ik kwam dit probleem tegen met mijn desktoptoepassing (de provider ‘Microsoft.Jet.OLEDB.4.0’ is niet geregistreerd op de lokale computer). Ik had niet de mogelijkheid om als 32-bits app te bouwen. In de hoop dat dit anderen in dezelfde situatie zou helpen.

Ik heb het volgende gedaan en het probleem is verholpen:

  1. De 64-bits versie van Microsoft Access Database Engine geïnstalleerd
    2010 herdistribueerbaar
    , zoals voorgesteld door neo

  2. Mijn provider gewijzigd in Microsoft.ACE.OLEDB.12.0


Antwoord 11

Hoewel een meer optimale oplossing is om eenvoudigweg opnieuw te compileren zoals hierboven gesuggereerd, is hiervoor toegang tot de broncode vereist. In mijn geval had ik alleen de voltooide .exe en moest ik deze oplossing gebruiken. Het gebruikt CorFlags.exevan de .Net SDK om de laadkarakteristieken van de applicatie te wijzigen.

  1. Download de .NET Framework SDK (I Persoonlijk gebruikt 3.5 , maar de gebruikte versie moet op of boven de vereiste .NET voor uw toepassing zijn.
  2. Bij het installeren is alles wat u nodig hebt CorLibs.exe, dus controleer Windows Development Tools .
  3. Zoek na installatie uw CorFlags.exe. Voor mijn installatie van het .NET Framework 3.5 SDK was het op C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin.
  4. Open een opdrachtprompt en typ path/to/CorFlags.exe path/to/your/exeFile.exe /32Bit+.

je bent klaar! Hiermee wordt de startvlaggen voor uw programma ingesteld, zodat deze begint in 32-bits WOW64-modus, en kan daarom toegang hebben tot Microsoft.jet.oledb.4.0.


Antwoord 12

Wijziging in IIS-instellingen Toepassing Pool Geavanceerde instellingen.enable 32 bit applicatie


Antwoord 13

Wijzig gewoon het pand op basis van uw machine en heeft alles gedaan: -)

Project — & GT; Eigenschappen — & GT; Build — & GT; Target Framework — & GT; X64

of

Project — & GT; Eigenschappen — & GT; Build — & GT; Target Framework — & GT; X86


Antwoord 14

Ik heb mijn verbindingsreeks van

gewijzigd

Var MyConnectionString = String.Format (“Provider = Microsoft.jet.oledB.4.0; gegevensbron = {0}; Personen Veiligheid Info = True; Jet OLEDB: Database-wachtwoord =;”, Gisdbpath);

Hieraan:

Var MyConnectionString = String.Format (“Provider = Microsoft.jet.oledB.4.0; MODE = Delen Deny Geen; gegevensbron = {0}; Gebruikers-ID = admin; wachtwoord =;”, GISDBPATH);

Het werkt voor mij heeft nooit gevraagd om Microsoft.jet.oledb.4.0’registerie.


Antwoord 15

Er is inderdaad geen 64-bits versie van JET – en geen plannen (blijkbaar) om er een te produceren.

Mogelijk kunt u de ACE 64-bits stuurprogramma gebruiken:
http://www.microsoft.com/en -us/download/details.aspx?displaylang=nl&id=23734

  • maar ik heb geen idee hoe dat zou werken als je terug moet naar Jet voor je 32-bits apps.

U kunt het project echter mogelijk overschakelen naar 32bit in de Express-versie (ik heb het niet geprobeerd en heb 2008 in geen enkele vorm meer geïnstalleerd)

Misschien is het tijd om Access-databases helemaal te schrappen, de knoop door te hakken en in plaats daarvan voor SQL-server te gaan?


Antwoord 16

Ik gebruik VS2013 voor Winforms, de onderstaande oplossing werkte voor mij.


Antwoord 17

In oudere versies van IIS vindt u Advance Settingsniet, dus om Enable 32-bit Applicationsin te schakelen, moet u de volgende opdrachten uitvoeren:

cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1

en

%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i

Referentie: Hier


Antwoord 18

Ik kreeg dezelfde uitzondering tijdens het uitvoeren van “SQL Server 2014 Import and Export Data (64-bit)” op mijn Windows 8.1.

Om het probleem te verhelpen, heb ik het volgende gedaan

Start SQL Server 2014 Import en exportgegevens (32-bits) in plaats van 64-bits en het werkt voor mij. Ik heb geen IIS-instelling gewijzigd en installeerde geen extra software.


Antwoord 19

Ik weet dat ik dit probleem steeds opnieuw heb wanneer ik mijn aanvraag op een nieuwe server inzet omdat ik dit stuurprogramma gebruik om verbinding te maken met een Excel-bestand. Dus hier is het, wat ik de laatste tijd doe.

Er is een Windows Server 2008 R2, ik installeer de toegangsstuurprogramma’s voor een X64-bit machine en ik ben van deze boodschap af, waardoor ik heel blij is om een ​​ander te botsen.

Deze hieronder hier werkt prachtig op mijn Dev-machine, maar op de server geeft me een fout, zelfs na het installeren van de nieuwste ODBC-stuurprogramma’s, waarvan ik denk dat dit het probleem is, maar dit is hoe ik het heb opgelost.

private const string OledbProviderString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\OlsonWindows.xls;Extended Properties=\"Excel 8.0;HDR=YES\"";

Ik vervang hieronder met de nieuwe provider zoals dit:

private const string OledbProviderString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\OlsonWindows.xlsx;Extended Properties='Excel 12.0;HDR=YES;';";

Maar zoals ik dit doe, is er één ding dat u moet opmerken. Het gebruik van de .XLSX-bestandsextensie- en Excel-versie is 12.0.

Nadat ik op dit foutmelding heb gekomen FOUT: “Kon geen Installeerbare ISAM” , ik besluit om de dingen een beetje zoals hieronder te veranderen:

private const string OledbProviderString =      @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\OlsonWindows.xls;Extended Properties='Excel 8.0;HDR=YES;';"; 

en ja, ik ben klaar met dat vervelende ding, maar hier kreeg ik nog een bericht De Microsoft Access database-engine kan het bestand ‘time_zone’ niet openen of er naar schrijven. Het is al exclusief geopend door een andere gebruiker, of je hebt toestemming nodig om de gegevens te bekijken en te schrijven.wat me vertelt dat ik niet ver verwijderd ben van een oplossing.

Misschien is er een ander proces dat het bestand intussen heeft geopend en hoef ik alleen maar opnieuw op te starten en alles zal soepel verlopen zoals verwacht.


Antwoord 20

ga naar Start->Uitvoeren en typ cmd
hiermee wordt de opdrachtprompt gestart
(ook beschikbaar via Start->Programma’s->Accessories->Opdrachtprompt)

typ cd .. en druk op Return
typ cd .. en druk nogmaals op Return (blijf dit doen totdat de prompt :> ) toont

nu moet je naar een speciale map gaan die c:\windows\system32 kan zijn of c:\winnt\system32 of c:\windows\sysWOW64
probeer elk van deze te typen, bijv
cd c:\windows\sysWOW64
(als er staat Het systeem kan het opgegeven pad niet vinden, probeer dan de volgende)
cd c:\windows\system32
cd c:\winnt\system32
als een van deze geen fout veroorzaakt, stop dan, je hebt de juiste map gevonden.

nu moet je de OLE DB 4.0 DLL’s registreren door deze commando’s te typen en na elk op Return te drukken

regsvr32 Msjetoledb40.dll
regsvr32 Msjet40.dll
regsvr32 Mswstr10.dll
regsvr32 Msjter40.dll
regsvr32 Msjint40.dll


Antwoord 21

Er is geen 64-bits provider voor Jet. Als u meerdere DB-bronnen wilt ondersteunen, waaronder Jet to Excel, heeft u ten minste dat deel van uw toepassing nodig om in een 32-bits proces te draaien.

De fout die je krijgt als je compileert voor x86 is een beetje vreemd. Ik zie niet in hoe je in dit geval zou verwijzen naar 64-bits assemblies.

Other episodes