INFO: Hoe Visual Basic 3.0 handelt de beveiliging in Microsoft Access ingesteld

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 105990 - Bekijk de producten waarop dit artikel van toepassing is.
Alles uitklappen | Alles samenvouwen

Op deze pagina

Samenvatting

Visual Basic versie 3.0 bevat Microsoft Access database engine. Visual Basic bevat de syntaxis om een Microsoft Access-database bewerken in bijna elke manier kunnen die Microsoft Access. Een belangrijke uitzondering is in het gebied van beveiliging. Alleen Microsoft Access kunt instellen of wijzigen van de beveiliging opties (zoals id's en wachtwoorden voor aanmelding) en instellen of wijzigen machtigingen voor specifieke objecten in een bepaalde database.

Visual Basic versie 3.0 bevat twee instructies (SetDataAccessOption en SetDefaultWorkspace) die voldoen aan een Visual Basic-toepassing toestaan het beveiligingsmechanisme waarmee Microsoft Access wordt geïmplementeerd en aanmelden met Visual Basic-code. U kunt de machtigingen krijgen via deze instructies toegekend aan een bepaalde gebruiker.

Dit artikel wordt uitgelegd van de mechanismen van de beveiliging van Microsoft Access die van toepassing op de Visual Basic-versie 3.0 en Visual Basic-programmeur. De volledige beveiligingsmogelijkheden van Microsoft Access zijn buiten het bestek van in dit artikel.

Voor een volledige beschrijving van de beveiligingsmogelijkheden van de van Microsoft Openen, raadpleegt u het volgende Knowledge Base-artikel:
122036 WX1051: De beveiligingswizard en het witboek bijlage Opmerking 2.0

Meer informatie

Microsoft-beveiliging is geïmplementeerd in twee delen:
  • Elke gebruiker of groep heeft een unieke beveiligings-ID (SID) code.
  • SID code is opgeslagen in de database en de bijbehorende machtigingen voor de SID.
De volgende twee secties geven details.

Elke gebruiker of groep heeft unieke beveiligings-ID (SID)

In Microsoft Access heeft elke gebruiker en groep een beveiligings-ID (SID). De SID is een binaire tekenreeks die de unieke identificatie van de gebruiker of groep. Wanneer een gebruiker Logboeken op of vanuit het dialoogvenster Aanmelden in Microsoft Access of code in Visual Basic (geïllustreerde later in dit artikel), Microsoft Access Engine wordt gelezen uit de tabel MSysAccounts van het systeem.MDA-database. Dit alleen door Microsoft Access database gemaakt en een nieuwe (lege) één gemaakt als het oorspronkelijke bestand is verwijderd.

Opmerking: Als het oorspronkelijke systeem.MDA per ongeluk is verwijderd, alle unieke SID's gaan verloren. Daarom beveiligd alle mogelijkheid toegang te krijgen tot databases is ook verloren. Daarom is het verstandig een back-up van zowel de database en het systeem.MDA-bestand in plaats van wanneer de machtigingen zijn ingesteld voor de database.

Bij het aanmelden (niet-hoofdlettergevoelig) op de naam van de gebruiker door de gebruiker worden geleverd en wachtwoord (hoofdlettergevoelig). Als de gebruikersnaam en het wachtwoord correct zijn, de SID van de gebruiker opgehaald en opgeslagen in een interne structuur van de Engine. Het wachtwoord wordt alleen voor het valideren van de gebruiker gebruikt. Vanaf dit punt, Zodra de gebruiker een geverifieerde gebruiker wordt, heeft het wachtwoord geen effect op beveiliging.

Hier is een belangrijk punt voor het gedrag van Visual Basic. Standaard de engine van Microsoft Access probeert te valideren gebruiker en wachtwoord Admin en "" respectievelijk. Visual Basic versie 3.0 wordt zonder enige code Deze toetsencombinatie verzenden naar de engine van Microsoft Access standaard. Dit betekent dat, zelfs zonder het gebruik van de Visual Basic-beveiliging instructies in Visual Basic-programma krijgt toelating tot de database Als de gebruiker 'Admin' van de groep Administrators niet heeft het wachtwoord gewijzigd geen standaard ("").

Nadat u bent aangemeld, wordt de SID van de gebruiker opgehaald. Deze SID wordt gebruikt voor alle verdere bewerkingen binnen de engine van Microsoft Access.

De SID wordt opgeslagen in het systeem.MDA-Database

De SID wordt opgeslagen in de database zelf. Daarom alle machtigingen toegekend worden aan een bepaalde gebruiker of groep ook opgeslagen in de database de unieke SID is gekoppeld.

Hiermee een ander belangrijk punt voor gedrag van Visual Basic. De Visual Basic-programma zal krijgt toegang tot de database en hebben volledige machtigingen negeren het beveiligingsmechanisme van Microsoft Access als seeming het volgende geldt:
  • De Visual Basic-programmeur heeft de locatie van het systeem niet genomen.MDA database rekening in de programmacode.
  • De gebruiker 'Admin' heeft niet het wachtwoord gewijzigd van de standaardwaarde van geen ("").
Dit gebeurt door het standaardgedrag van de Microsoft Access motor en Visual Basic. Het gecombineerde effect is om de vermelding voor de database en bijbehorende objecten door de Visual Basic-code.

De lijst van de objecttypen in Microsoft Access zijn: tabel, Query, formulier, Rapport-, Macro- en Module. Van deze zijn alleen de eerste twee toegankelijk via Visual Basic-code, zodat de anderen kunnen worden weggelaten uit deze uitleg.

De volgende twee secties wordt uitgelegd in elk van de twee Visual Basic security- Verwante instructies (SetDataAccessOption en SetDefaultWorkspace). De twee instructies zijn ontworpen voor een keuze van het systeem.MDA-bestanden en aanmelden posten naar een Microsoft Access-database met beveiliging van Microsoft Toegang. Na deze twee secties is een sectie die betrekking twee heeft instructies voor het gedrag van de engine van Microsoft Access met betrekking tot beveiliging.

--SetDataAccessOption syntaxis en gedrag

SetDataAccessOption heeft de volgende parameters:
   SetDataAccessOption option, value

   option is a numeric value with only one legal value (1).
				

Bijvoorbeeld:
   SetDataAccessOption 1, "E:\VBPROJ\MY.INI"
				

In de DATACONS.TXT-bestand in de hoofdmap van de map \VB een constante is voor deze waarde gedefinieerd:
   Global Const DB_OPTIONINIPATH = 1
				

SetDataAccessOption stelt de naam en het pad van de toepassing initialisatie (.Ini-) bestand. Van de toepassing.INI-bestand heeft alleen effect Wanneer SetDataAccessOption wordt gebruikt vóór is de data access-functionaliteit geladen en geïnitialiseerd. Nadat u toegang tot gegevens is geïnitialiseerd, deze instelling kan niet worden gewijzigd zonder eerst de toepassing af. De waarde is een een tekenreeksexpressie. Voor de optie DB_OPTIONINIPATH het waardeargument bevat een tekenreeksexpressie die het pad en de naam van uw initialisatie van de toepassing (.Ini-) bestand. Initialisatiebestanden zijn meestal in de Windows-map van de gebruiker opgeslagen en hebben dezelfde naam als de uitvoerbaar bestand, maar met een.Extensie INI. Gebruik deze instructie alleen als uw het initialisatiebestand van de toepassing heeft een andere naam of in een map andere dan de Windows-map.

De instructie SetDataAccessOption is niet nodig wanneer u de Visual Basic-project in de VB.EXE-omgeving als de VB.INI-bestand (in de Windows Directory) bevat de volgende regels:

[Opties]
SystemDB = T:\ACCESS\SYSTEM.MDA
UtilityDB = T:\ACCESS\UTILITY.MDA

Opmerking: de werkelijke locatie van het systeem.MDA niet significant is verstrekt Microsoft Access en Visual Basic hebt u een vermelding aan te wijzen de SYSTEEM.MDA delen. De instructie SetDataAccessOption is niet vereist als de toepassing.EXE-bestand heeft een eigen.INI-bestand in de Windows en de.EXE en.INI-bestanden hebben dezelfde naam.

--SetDefaultWorkspace syntaxis en gedrag

SetDefaultWorkspace heeft de volgende parameters:
   SetDefaultWorkspace username, password
				

Als deze instructie is uitgevoerd, stuurt Visual Basic het equivalent van de volgende regel om de Microsoft Access database-engine die is opgenomen met Visual Basic:
   SetDefaultWorkspace "Admin" , ""
				

Deze instructie is een geldige SID te verkrijgen en te krijgen alle tabellen en Query objecten in de database.

Relatie tussen Visual Basic en Microsoft Access-beveiliging

Begrijpen van de relatie tussen Visual Basic en Microsoft Access beveiliging, moet u het beveiligingsmechanisme dat Microsoft Access kennen. Hier is een gedetailleerde uitleg aan het Visual Basic programmeurs die Microsoft Access niet veel gebruikt. Er is een hiërarchie van machtigingen in Microsoft Access. Op het hoogste niveau Er zijn groepen. Deel uitmaakt van een bepaalde groep gebruikers zijn. Naar machtigingen voor bepaalde gebruikers selectief moeten alle machtigingen eerst worden uitgeschakeld of verwijderd uit de groep gebruikers. Alleen klikt en vervolgens machtigingen worden verleend of ingetrokken voor individuele gebruikers.

Expliciete machtigingen voor een individuele gebruiker machtigingen genoemd. Machtigingen voor de groep met de gebruikersaccount worden genoemd. Impliciete machtigingen. Impliciete machtigingen hebben voorrang op de expliciete machtigingen.

U kunt het menu Beveiliging stelt u machtigingen in Microsoft Access nadat een database is geopend en de gebruiker zich heeft aangemeld. Van de beveiliging menu, kies machtigingen toewijzen van machtigingen voor elk object in de de database in Visual Basic alleen tabellen en Query-objecten betekent.

Als er een groep in het Microsoft Access-database met de naam bijvoorbeeld Analisten met de gebruikers-Bob en Susan en u wilt Bob te beperken Alleen gegevens lezen en Suzan volledige machtigingen verlenen, als volgt:
  1. Aanmelden bij Microsoft Access als een gebruiker in de groep Administrators. Bijvoorbeeld: Voer Admin of Fred.
  2. Kies in het menu Beveiliging machtigingen (ALT-S P).
  3. Table-objecten zijn standaard-type. Selecteer de naam van de tabel u machtigingen wilt instellen op. Selecteer bijvoorbeeld TestTbl.
  4. Stel de optie in het kader van de gebruiker of groep aan groepen. Klik op de keuzelijst met invoervak de lijst en klikt u op analisten om de groep te selecteren.
  5. Schakel alle selectievakjes in te trekken alle machtigingen voor de hele groep.
  6. De knop optie wijzigen in gebruikers en Bob selecteren. Schakel de Schakel de selectievakjes voor alle machtigingen van Bob.
  7. Susan selecteren in de lijst en schakel het selectievakje volledige machtigingen.
  8. Klik op de knop toewijzen om de wijzigingen in de tabel.
Stel op dit punt hebt u een Visual Basic-programma met de de volgende code in de gebeurtenis load:
Sub Form_Load ()
   Dim db As database
   Dim ds As dynaset
   Dim scenario as integer

   scenario = 'insert a value between 1 and 4 here

   select case scenario
      case 1:
         ' Do nothing

      case 2:
         SetDefaultWorkspace "bob", "leftout"

      case 3:
         SetDataAccessOption 1, "E:\VB.INI"    ' not in \WINDOWS directory

      case 4:
         SetDataAccessOption 1, "E:\VB.INI"    ' not in \WINDOWS directory
         SetDefaultWorkspace "bob", "leftout"
   end select

   Set db = OpenDatabase("E:\DATACON\BASES\ACCESS11\ASAMPLE.MDB") ' point 1
   Set ds = db.CreateDynaset("TestTbl")                           ' point 2

   autoredraw = True   ' to make Print  statement persist on the form
   Print ds(0), ds(1)

End Sub
				

Hier zijn verschillende scenario's waarmee de relatie tussen Visual Basic en Microsoft Access-beveiliging:

SCENARIO 1: In dit geval is er geen verwijzing naar de locatie van de SYSTEEM.MDA-bestand. Windows-engine van Microsoft Access en worden niet vinden de.INI-bestand met de sectie [Options] eerder in dit artikel worden vermeld. Daarom is het systeem.MDA genegeerd en Visual Basic wordt standaard de Standaard combinatie van gebruiker en wachtwoord ('Admin', ' '). Echter, eerder het standaardwachtwoord voor de gebruiker Admin is veranderd in iets anders dan "". Daarnaast alle machtigingen voor de groep Administrators zijn ingetrokken en de Gebruiker 'Admin' in de groep Administrators. Daarom de volgende Visual Basic Fout in punt 2
Kan niet worden gelezen; geen leesrechten voor tabel of query ' f)) "

U kunt de achterdeur in Visual Basic en Visual Basic hebt gesloten de toepassing probeert te omzeilen de aanmeldingen in het systeem.MDA-bestand.

SCENARIO 2: In dit geval omdat het aanroepen van de SetDefaultWorkspace instructie zonder dat u de aanwijzer op het systeem.MDA-bestand, de Visual Basic engine van Microsoft Access hunts voor het systeem.MDA-bestand en niet het zoeken, geeft de volgende fout op het punt 0 in de code:
Kan bestand niet vinden ' systeem.MDA'

Opmerking: De fouten die in beide scenario's 1 en 2 optreden zijn hetzelfde als zou optreden als het systeem.MDA-bestand is verplaatst, hernoemd of verwijderd.

SCENARIO 3: In dit geval u vertellen Microsoft Access Visual Basic Indien de motor het systeem.MDA-bestand zich bevindt, maar een gebruiker niet opgeeft en wachtwoord combinatie. Daarom nogmaals, levert Visual Basic de enige gebruiker en wachtwoord combinatie bekend ('Admin', ' "), die niet langer een geldig combinatie omdat u een wachtwoord hebt toegevoegd aan de gebruikersaccount beheerder. Als een resultaat, Visual Basic geeft op 1 punt in de code de volgende fout:
Geen geldige account of wachtwoord.

SCENARIO 4: In dit geval u beide parameters opgeven correct. Daarom omdat gaf Bob machtiging 'Gegevens lezen' en 'lezen Definities"om de Visual Basic-Microsoft Access-engine te lezen, de Visual Basic-toepassing worden afgedrukt voor de eerste twee velden in de eerste record van de tabel met de naam TestTbl.

Als u de vier scenario's met de gebruiker Suzan herhaald, zou zijn de hetzelfde. Echter Susan verder gaan en de tabelstructuur van de wijzigen en de ook gegevens. Denk eraan dat u eerst de groep analisten geselecteerd en ingetrokken alle machtigingen. U toegevoegd terug alle machtigingen aan Susan, maar alleen lezen Gegevens en definities lezen zijn naar Bob toegevoegd.

Opmerking: De groep beheerders heeft een speciale betekenis voor de beveiliging. Dit geldt voor elke gebruiker in die groep. De groep beheerders-SID wordt opgeslagen in het systeem.MDA wanneer een database wordt gemaakt. Als gevolg hiervan, de groep Domeinadministrators hebben altijd de machtigingen op alle objecten in te wijzigen de database. Met deze machtiging kan niet worden ingetrokken door iedereen. Dit machtiging blijft zelfs wanneer alle machtigingen zijn ingetrokken vanaf de Beheerdersgroep en wordt niet weergegeven in het dialoogvenster machtigingen. Dit is een andere reden om een back-up houden en bijhouden welk systeem.MDA is in gebruiken wanneer de database is gemaakt.

Met OwnerAccess Option in een SQL-Query


Een laatste punt van de mogelijke verwarring draait rond het gebruik van de volgende zin in een SQL-query:
   ... With OwnerAccess Option
				

Bekijk bijvoorbeeld deze code:
   Sub Form_Load ()
      Dim db As Database
      Dim qd As querydef

      Set db = OpenDatabase("C:\ACCESS\DB1.MDB")

      ' Enter the following two lines of code as one, single line:

      Set qd = db.CreateQueryDef("myQD", "select * from [TableDetails]
         with owneraccess option ;")
      db.Close
   End Sub
				

Deze code resulteert in deze fout:
Ongeldige Database-ID.

Dit komt omdat OwnerAccess naar de eigenaar van de database verwijst. De eigenaar is de maker van de database. Met andere woorden verwijst OwnerAccess naar eigenaar van de gebruiker en wachtwoord combinatie (unieke SID) die is opgeslagen in de database (BD1.MDB in dit geval). Echter, de code bevat de twee instructies nodig om te verwijzen naar het systeem.MDA-bestand van een beveiligde de database. Werkelijk, in dit geval alleen de instructie SetDefaultWorkspace is essentieel als het gecompileerde.EXE-bestand van.INI-bestand met een geldige De sectie [options], is de Windows-map.

De code gebruikt de backdoor. Deze unieke SID van niet heeft verstrekt de de eigenaar van de database engine, zodat de engine niet de standaardnaam weten combinatie en wachtwoord (Admin, "") van de gebruiker is eigenaar van de database. Zelfs als dat blijkt de gebruiker Admin is de eigenaar van de database zonder Lees het systeem.MDA-bestand de engine niet controleren of dit feit dus geeft de fout.

Opmerkingen voor gebruikers van Microsoft Access versie 2.0

Met behulp van de onlangs uitgebrachte Microsoft Jet 2.0/Visual Basic 3.0 Laag, Visual Basic toegang tot Microsoft Access versie 2.0-databases. Hieronder worden enkele notities kunt u een beveiligde converteren versie 1.1-database in Microsoft Access versie 2.0-indeling.

Als u een database uit versie 1.x is beveiligd, blijft beveiligd of u openen met Microsoft Access versie 1.x of 2.0. Echter, Microsoft Access versie 2.0 kan niet worden gebruikt om machtigingen in de database toevoegen of wijzigen zelfs door de beheerder, totdat de database is geconverteerd naar versie 2.0.

Wanneer u Microsoft Access versie 2.0 installeert, wordt de eigen werkgroep bestand (SYSTEM.MDA). Als Microsoft Access versie 2.0 is geïnstalleerd de dezelfde map als het systeem van versie 1.x van versie 1.x.MDA-bestand SYSTEM1X gewijzigd.MDA.

Om wijzigingen in de beveiliging van een geconverteerde database, moet u een versie 2.0 systeem.MDA met identieke groepen en gebruikers (en identieke PID's) als het oorspronkelijke systeem.MDA.

Opmerking: PID (persoonlijke id) in Microsoft Access versie 2.0 zijn de equivalent van de PIN (persoonlijke id-nummers) in versie 1.x

Maken van een beveiligde werkgroep:
  1. De 2.0 Werkgroepbeheer-hulpprogramma gebruiken om een nieuwe werkgroep maken. Dit is een systeem van versie 2.0.MDA-bestand.
  2. Alle gebruikers- en groepsaccounts met dezelfde naam en PID opnieuw getallen die zijn gebruikt in Microsoft Access versie 1.x.
Een beveiligde 1.x Database converteren naar 2.0:

Opmerking: In een beveiligde werkgroep, alleen gebruikers met machtigingen Ontwerp wijzigen alle objecten kunnen een versie 1.x-indeling converteren naar versie 2.0-indeling. Ook moet u de machtigingen Ontwerp wijzigen toewijzen aan de database versie 1.x in Microsoft Access versie 1.x met versie 1.x-werkgroep.
  1. Zorg ervoor dat niemand met behulp van de database versie 1.x.
  2. Aanmelden bij Microsoft Access 2.0 als lid van de groep beheerders die niet de Admin-gebruiker.
  3. Kies de opdracht Database converteren in het menu bestand.
  4. Selecteer de versie 1.x-database die u wilt converteren. U zal worden. wordt u gevraagd de naam van de versie 2.0.

    Opmerking: De opdracht Database converteren forceert u een nieuwe naam kiezen voor de database. Hiermee kunt u een reservekopie van uw versie 1.x Als nadat u een database hebt geconverteerd van versie 1.x met database versie 2.0 kunt u niet converteren het terug naar versie 1.x.
  5. De gebruikers toevoegen aan de nieuwe versie 2.0-werkgroep (SYSTEM.MDA) door Gebruik het hulpprogramma Werkgroepbeheer.

    Opmerking: U kunt dit ook bereiken door aanpassing van de MSACC20.INI-bestand in de map Windows. In de sectie [Options] van het bestand Wijs de versie 2.0-systeem de vermelding SystemDB wijzigen.MDA het bestand. De sectie [Options] van het bestand is vergelijkbaar met het voorbeeld hieronder:
          [Options]
          SystemDB=<microsoft access path>\SYSTEM.MDA
    
    						

Belangrijke punten om te onthouden

  1. Alleen Microsoft Access kunt maken en wijzigen van het systeem.MDA-bestand.
  2. Het systeem.MDA-bestand bevat de unieke SID wordt gebruikt in een database met machtigingen voor het sorteren die is die voor de engine van Microsoft Access Deze machtigingen worden afgedwongen. De SID wordt verkregen door de De engine van Microsoft Access met een geldige gebruikersnaam en wachtwoord combinatie waarvan de unieke beveiligings-id die de motor in het geheugen opgeslagen ontvangt afdwingen van beveiliging op een database openen.
  3. Microsoft Access en Visual Basic moet worden verwezen naar de de locatie uit het systeem.MDA-bestand om toegang te krijgen tot databases beveiliging en machtigingen geïmplementeerd hebben.
  4. Er is een achterdeur beschikbaar voor de Visual Basic-toepassing Als het wachtwoord voor de gebruiker in de groep Domeinadministrators (benoemde Admin) niet is gewijzigd van de standaard geen ("").
  5. Als het woord 'With OwnerAccess Option' in de SQL-query van gebruikt een Methode CreateQueryDef, CreateDynaset of CreateSnapshot, een verwijzing naar het systeem.MDA-bestand moet bestaan. Ook als u de achterdeur (de standaard gebruiker en wachtwoord combinatie van Admin en "") en niet het systeem moet lijken.MDA, wanneer u 'With OwnerAccess Option' in een SQL-query de motor moet het systeem zien.MDA-bestand overeenkomt met de SID van de eigenaar (auteur) van de database gebruiker aangemeld.
  6. Geldige gebruikers- en combinaties worden opgeslagen in de SYSTEEM.MDA-bestand, maar de machtigingen zijn opgeslagen in de database (.MDB bestand) zelf. Een unieke sleutel (SID) wordt geëxtraheerd uit het systeem.MDA geleverd via een geldige gebruikersnaam en wachtwoord combinatie aan de De engine van Microsoft Access met het dialoogvenster Aanmelden in Microsoft Access of door de code in Visual Basic.

Eigenschappen

Artikel ID: 105990 - Laatste beoordeling: vrijdag 6 juli 2012 - Wijziging: 4.0
De informatie in dit artikel is van toepassing op:
  • Microsoft Visual Basic 3.0 Professional Edition
Trefwoorden: 
kbinfo kbmt KB105990 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende: 105990
Vrijwaring inhoud KB-artikelen over niet langer ondersteunde producten
Dit artikel heeft betrekking op producten waarvoor Microsoft geen ondersteuning meer biedt. Daarom wordt dit artikel alleen in de huidige vorm aangeboden en wordt het niet meer bijgewerkt.

Geef ons feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com