# Shkenca > Informatikë dhe Internet > Arti i programimit >  Si të mbroj databazën në Access 2007 nga kopjimi?

## nince_tutes

Pershendetje cuna.

E kam krijuar nje program ne access 2007, e kam konvertu n format .accde ne menyre qe t mos shifen forms, reported dhe ne design view, dhe kam filluar ta shperndaj tek klientet e mi.

Problemi im eshte se si me e ruajt kete databaze ne akses nga perdorimi i paautorizur, e kam fjalen qe te mos ta kopjojne dhe ta perdorin ne kompjutera te tjere.

A ka ndonje zgjidhje per kete. Po sikur ta konvertoj te gjithe aplikacionin ne Visual Basic 2008 ose 2005, di dikush. DUa qe ti bej dhe import formave dhe raporteve qe kam krijuar ne access dhe te mos ti rikrijoj nga e para ne visual basic.

Per me teper q kete gjuhe programimi nuk e njoh mire.

flm, ne pritje....

----------


## hot_prinz

pershendetje,

nje menyre do te ishte implementimi i nje funksioni, qe programi yt kur starton per here te pare ne nje kompjuter te ri, te mos startoje komplet por vetem si demonstrim dmth, i bllokon funksionet e programit perderisa programi nuk eshte regjistruar, nese perdoruesit i pelqen domnstrimi i programit tend dhe vendos te regjistroje/pervetsoje programin tend atehere programi yt mund te marre numrin serial te ndonje hardware te atij kompjuteri te ri, psh: numrin serial te hardiskut dhe ne baze te tij te gjeneroje nje numer regjistrimi te cilin perdoruesi ta dergon ty (bashke me mjetet financiare) dhe ti i dergon nje numer serial i cili i perputhet atij numri per te c'bllokuar funksionalitetin e plote te atij programit tend.

----------


## nince_tutes

shum mire hot_prinz. po a m ndihmon dot q kur ta jap n nje pc, un dorezimin e bej vete, si t'ja marr numrin serial te harddiskut psh, dhe ne rast se ai do t provoje ta perdori ne nje vend tjeter te bllokohet nepermjet kodit te harddiskut.

Une jam vete q ja bej demostrimin e programit ne akses dhe dua q ta mbroj me nr serial t harddiskut ose me cdo menyre tjeter.

pres perseri

----------


## hot_prinz

ja nje udhezim ne VB6 se si me e marre kodin e hardiskut, mos merr shembullin e pare me GetVolumeInformation API function ky numer serial i hardiskut ndrron pas cdo formatimi te kompjuterit, por perdor shembullin e dyte te gjate i cili e merr numrin serial te hardiskut nga prodhuesi i vertete i hardiskut dhe vetem ai do te jete unik:

Shembull per te marre nurmin unik te hardiskut

te pershendes

----------


## nince_tutes

flm gjithsesi, por puna eshte se une dua nje rast konkret t implementuar ne access, dhe sidomos n formen qe do te ekzekutohet e para kur hapet aksesi.

Kjo do t ishte me shume rendesi, pasi do mund te identifikohej q n fillim nese po perdoret ne pc tjeter ose jo.

Madje, do ishte mire qe me ane t ndonje kodi, ne rast se tentohet te perdoret m shume se 3 here databaza ne kompjuter tjeter ti fshinte dokumentat.

flm, ne pritje perseri

----------


## mendimi

Mua me jane vjedhe shpesh programet ne access, me gjith mbrojtjet qe kam bere. Mendoj qe eshte e pamundur te mbrohet, por nese gjeni ndonje menyre do te me pelqente edhe mua.

----------


## hot_prinz

Ja implementimi i nje shembulli te thjesht si mund te kontrollohet numri i hardiskut te nje kompjuteri dhe vlersimi se a mund te perdorim apo jo kete program ne kete hardisk, nese numri nuk perputhet accessi do te perfundoje (Kujdes ketu se mund te bllokosh edhe programin tend). Para se te perdorni kete cope kodi ruani programet tuaja ne nje vend tjeter!



```

Option Compare Database

    Private Sub Form_Load()
        Dim serHardisk As Long
        serHardisk = GetDriveSerialNumber
        If serHardisk = 815 Then
            MsgBox "Numri serial hardiskut " & Left(AppPath, 1) & ":\ eshte " & GetDriveSerialNumber & _
            vbCrLf & "Ju keni te drejte te perdorni kete Program!", vbOKOnly + vbInformation
            
        Else
            MsgBox "Numri serial hardiskut " & Left(AppPath, 1) & ":\ eshte " & GetDriveSerialNumber & _
            vbCrLf & "Ju nuk keni te drejte te perdorni kete Program!" & vbCrLf & "PAPA!", vbOKOnly + vbInformation

            Dim a
            a = InputBox("Jepni numrin e sakte serial!")
            If serHardisk = a Then
                MsgBox "Numri serial hardiskut " & Left(AppPath, 1) & ":\ eshte " & GetDriveSerialNumber & _
                vbCrLf & "Ju keni te drejte te perdorni kete Program!", vbOKOnly + vbInformation
            Else
                MsgBox "Numri serial hardiskut " & Left(AppPath, 1) & ":\ eshte " & GetDriveSerialNumber & _
                vbCrLf & "Ju nuk keni te drejte te perdorni kete Program!" & vbCrLf & "PAPA!", vbOKOnly + vbInformation
                'DoCmd.Quit 'Mbyll Accessin dhe Databazen! PERDORE ME KUJDES SEPSE MUND TA BLLOKOSH PROGRAMIN TEND
            End If
        End If
        
    End Sub
      
    Public Function GetDriveSerialNumber(Optional ByVal DriveLetter As String) As Long
        Dim fso As Object, Drv As Object
        Set fso = CreateObject("Scripting.FileSystemObject")
        If DriveLetter <> "" Then
            Set Drv = fso.GetDrive(DriveLetter)
        Else
            Set Drv = fso.GetDrive(fso.GetDriveName(AppPath))
        End If
        With Drv
            If .IsReady Then
                DriveSerial = Abs(.SerialNumber)
            Else
                DriveSerial = -1
            End If
        End With
        Set Drv = Nothing
        Set fso = Nothing
        GetDriveSerialNumber = DriveSerial
    End Function

    Public Function AppPath() As String
        Dim sPath As String
        sPath = CurrentDb.Name
        While Right$(sPath, 1) <> "\"
            sPath = Left$(sPath, Len(sPath) - 1)
        Wend
        AppPath = sPath
    End Function
```


per te kontrolluar se sa here eshte hapur ky program nga perdoruesi mund te perdoret nje tekstfile e fshehur diku ne system qe numron startimet e programit dhe nese startimet e paregjistruara arrijne numrin 3 atehre mund te aktivizohet nje funksion qe fshin databazen prej sistemi.

----------


## klodj

Une perdor nje menyre jo dhe aq te sigurte por ka pasur efekt.
Perdor nje procedure qe kerkon nje file te cilin e kam hedhur ne nje folder te sistemit te i cili perdoruesi nuk ka pse te hyje.
Ne momentin qe hapet programi kerkon kete file dhe nqs nuk e gjen do te thote qe programi eshte kopjuar ne nje kompjuter tjeter. Dhe une nuk hezitoj te theras nje Macro e cila i shuan te gjitha Tabelat e brendshme dhe Pyetesat pa te cilat programi nuk ka sesi te funksionoje.
Ai qe e kopjon programin nuk e di kete dhe sapo e hap ne kompjuter tjeter i del nje mesazh qe i thote se nuk ka te drejte ta perdori kete program dhe me pas cdo gje i shuhet si me siper.
E keqja e kesaj eshte se duhet qe ta instaloj vete programin dhe te hedh fajllin ne menyre te fshehte ne nje vend te fshehte. Deri tani kane kaluar dy vjet dhe nuk kam pasur probleme. Ama po iu be format do bej te njejten procedure.

Gjithsesi kam shfrytezuar edhe serialin e hard diskut por nuk e di pse kam nje frike se mos nuk funksionoje. Ndaj nga halli kam shpikur kete procedure te cilen po jua postoj me poshte. Shpresoj te kuptoni dicka edhe pse une perdor variabla pa shume shpjegime dhe me duhet te them se programit i kam vendosur edhe kod qe askush te mos shohe VB scriptet.


Private Sub Form_Open(Cancel As Integer)
On Error GoTo virus_err
Dim hej
Dim virus As Integer

Me.Text3 = Me.F1
If [Forms]![kloklo]![Text3] <> 1234567 Or [Forms]![kloklo]![F1] <> 1234567 Then
DoCmd.RunMacro "KillBill"
hej = MsgBox("Te gjitha te drejtat e kopjimit i perkasin vetem autorit! Ju nuk jeni i autorizuar per te perdorur kete program!", vbInformation, "Exchange 2007! - Gjirokastra Online")
virus = 1
End If
DoCmd.RunMacro "Min"
exit_form_open:
 Exit Sub
virus_err:
If Err.Number = 7874 Then
hej = MsgBox("Me vjen keq! Ju nuk jeni i autorizuar per te perdorur kete program!", vbInformation, "Exchange 2007! - emriim@faqjaime.com")
DoCmd.Close
End If
'    MsgBox Err.Description
    Resume exit_form_open

End Sub

----------


## OO7

Nuk ka menyre per te mbrojtur programin sepse c'do gje thyhet/manipulohet.

----------


## nince_tutes

Bravo klojd, me pelqeu menyra jote se si e ke trajtuar menyren e fshirjes se databazes, (duke futur nje folder tjeter)

Megjithate, do ta provoj dhe ne rast se funxionon do ta di shume per nder.
Gjithsesi per momentin me pelqeu menyra e te arsyetuarit.

Tema vazhdon t qendroj e hapur dhe cdo ide tjeter do t ishte e mirepritur.

----------


## nince_tutes

Klodi, e pashe kodin tend, por mu duk i veshtire per tu kuptuar, pasi dhe varialat i ke lene t shkurter dhe jo t qarte. 

do na ndihmoje te jepje me shume komente per cdo rresht te programit por dhe per makron q ke pedorur (sic e ke permendur ti qe do ti fshije me pas te gjitha tabelat dhe dhe queryit).

ne pritje

----------


## klodj

Epo eshte pak e ngateruar sado ta shpjegoj me fjale. Por mundohu qe programi te kerkoje nje file te cilin e ke vendosur ti dhe vetem ti e di se ku ndodhet. 
Ne momentin qe fili eshte aty cdo gje eshte ne rregull.

Ndersa makroja perdor funksionin DeleteObject. Duhet te besh disa prova sepse une jam pak remuje ne programim edhe per efekt qe dikush tjeter te mos kuptoje cfare kam bere. Dhe me e keqja eshte se kete program e kam bere para nje viti dhe duke mos patur shume shitje (dihet tregu ne shqiperi) do me duhet ca kohe qe ta rikthej ne kujtese, jo proceduren se ate besoj se e kuptove disi, por kodin sepse kam vendosur edhe ne dritaret e tjera te programit disa te tilla dhe me pak fjale dritarja e pare theret nje dritare tjeter (qe mos konfondoje perdoruesin) dhe ajo ne prapaskene dhe ne pak sekonda kerkon fajllin dhe rregjistron nje rekord ne nje tabele te cilen me pas e shikon procedura IF... dhe nqs gjithcka eshte Ok vazhdon. Ne te kundert theret proceduren e fshirjes nga makroja (me DeleteObject )

Duhet te ushtrohesh shume qe ta arrish kete gje. Dhe te siguroj qe eshte me mire se seriali i hard diskut sepse sipas paragjykimit te dikujt me lart qe tha qe cdo program thyhet i bie qe edhe per serialin te kete nje hile. Kurse ne kete rruge do te duhej nje menyre tjeter dhe ekspertet per ta thyer mund te jene shume te pakte dhe vetem nje here te hapet programi ne nje kompjuter tjeter cdo gje shuhet. Prandaj nuk ka shans te dyte.

----------


## hot_prinz

klodj,

edhe une mendoj se menyra jote eshte efikase, perderisa je ne kontakt te ngushte me klintet dhe ke mundesine te hudhesh at file ne system pa u diktuar, poashtu duhet perserite metoden nese klienti rastesisht formaton kompjuterin. 

Tani mu kujtua se nje siguri te tille perdor edhe nje program i firmes Ulead per krijimin/authoring e DVD-ve, te cilat ne autostart kerkojne nje file te fshehur ne system.

----------


## nince_tutes

Klojd, une e kuptova filozofine tende q n fillim, problemi im ishte se ne fillim nuk po e merrja dot vesh kodin.

Por, pasi kerkova dhe vet n google gjeta menyra q t kerkoj pikerisht per nje file t vendosur n nje folder t caktuar n kompjuter, dhe n rastin kur nuk ekziston, atehere databaza nuk hapet. 

Madje, n menyre q t rritet dhe m shume siguria, kam vendosur t krijoj 5 file t ndryshem ne 5 vendodhje t ndryshme neper kompjuter, dhe mjafton q t pakten njeri t mos ekzistoj prej tyre n kompjuterin ku mund t riperdoret, atehere databaza nuk hapet me.

Problemi q vazhdon t ngrihet eshte:

1. Ne rast se ai e perdor n 1 pc tjeter dhe nuk do i gjej normalisht filet e fshehur q do i vendosim ne neper pc, atehere ti bej te gjithe delete databazes.

2. a eshte e sigurt se ai nuk mund tja riperdore dot kodin e databazes. pra si ta mbrosh kodin q do kerkoje per filet e fshehur n kompjuter, ne menyre q kur dikush t provoje ti bej import databazes, kodi t mos shifet.

3. Besoj se duhet dhene vetem n formatin mde, ose ne access 2007 accde.

Flm, tema vazhdon t jete interesante dhe shume e hapur.

N pritje.

thanx

----------


## klodj

Atehere e zeme se ke nje program  db1  ne desktop:

Pasi te hapesh programin dhe te hysh te Kodi duhet te hapesh menune Tools dhe pastaj db1 properties ose "emri i programit" properties.
Aty kliko te Protection dhe kliko opsionin qe askush te mos shohe kodin dhe vendos edhe paswword.

Tani besoj je gati per tu hedhur ne treg..


Ne Macro perdor funksionin DeleteObject ne aq rreshta sa tabela apo query do te shuash duke shkruar psh:  DeleteObject(Tabela1) etj...

Pra e vetmja menyre qe dikush te thyeje programin tend eshte te hyje ne kod te cilin ti e mbrove me pasword dhe e dyta te kuptoje cfare ke bere. Kjo eshte aresyeja pse une jam pak remujaxhi ne programim. Por ne kuptimin e mire te fjales.


Te pershendes

----------


## Ardi_Pg_ID

Per mendimin tim une nuk te sygjeroj fshirjen e databases pasi nese ben fshirjen e tij do te thote qe fshin cdo informacjon qe ai klient ka futur ne database. Nese ai klint nje dite vendos te mare te tere databasen ta hedhe ne laptopin e tij per te punuar ne shtepi ate dite e hap databasen me laptop ne shtepi ca ndodh I gjith informacjoni I tij eshte I humbur. Ti si programues nuk mund te besh ate gje pasi pasi klienti ka blere programin eshte prona e tij edhe ti nuk mund te shkakosh humbje te informacjonit te klientit. Ti mund te fshish makro ose forma ose query po jo tabelat edhe informacjonin e klientit. Nese do te besh del te tere databases vendos nje rutine qe te beje backup informacjonin ne nje vend tjeter para se ta besh delete duke I dhene mundesi per ty te vesh te maresh e ca lek me shume per te rikthyer informacjonin e humbur Shumica e programeve qe kompania qe une punoj perdor nje menyre te tille. Gjate procesit te instalimit ne krijojme disa vlera nga gjenerime te hardware id psh nga mac adrese, hdd serial id, numri I userave, gjithashut edhe nga nje "dongle" nje usb flash drive qe ka nje id unike nga fabrika ku ne injoktojme edhe informacjone te kompanise tone ne eprom bios te usb flash. Keto informacjone I hedhin ne nje tabele ne MSSQL database. Gjeja e pare qe programi kontrollon eshte qe shikon nese kjo dongle ekziston si paisje ne kompjuter apo jo nese kjo ekziston krhason vlerat e eprom me ate cfare kemi vene ne ne database pastaj kerkon nese mac id edhe hardware id jane te njejte duke perdorur te njejten procedure qe ne kemi perdorur per gjenerimin e kesaj vlere edhe e kemi vene ne database. Pastaj shef nese ka ndonje user tjeter te lidhur me databasen edhe nese po kontrollon se sa usera kane te drejte te perdorin kete program. Nese keto kontrolle japin $false ose $null programi theret nje rutine qe kill procesin e programit edhe te nxjer nje msgbox me arsyen pse nuk mund te perdoresh kete program. Kjo eshte teoria e mbrojtjes qe ata perdorin me avantazhin qe programi duhet me patjeter te instalohet nga teknike te kompanise duke shtuar edhe perfitime me vete ku nese klienti do te ndryshoje apo te upgrade duhet te paguaje per kete gje perfitim monetar I kompanise. 

Ardi

----------


## klodj

Po kjo eshte super e drejte. Kerkoj ndjese qe thash DeleteObject(Tabela1) sepse duhej te thosha DeleteObject(Query1) ose gjithcka qe nuk permban informacione.
Eshte shume e drejte por ngaqe kam kohe qe nuk jam marre me programin sepse tani punoj per kompanine TPKSolutions.com dhe jam me shume si konsulent dhe agjent shitjesh, kam rene ne ujdi me veten per dicka, se mire per programe te vogla si ajo qe kam bere une Exchange 2007 per pikat ku kembehet valuta, por per programe te rendesishme financiare psh duhet t'ua leme vendin eksperteve dhe firmave serioze te cilat i kane dhene fund nje here e pergjithmone accessit. Aresyeja eshte sepse accessi mban info deri ne 1GB kurse SQL psh mund te mbaje 250 Gb ne mos gaboj dhe ka dhe shume avantazhe qe mbase kjo teme nuk eshte e pershtatshme. Por dua te them qe nqs duam te avancojme duhet te studiojme teknologjite me te fundit dhe jo te zeme nje qoshe me programet e accessit. 
Dhe nuk kane shume perfitime. Une deri tani kam shitur me pak nga c'fare kam shpenzuar. Sepse vetem koha qe kam harxhuar nuk llogaritet.
Ndaj duhet mbyllur kapitulli i accessit qe ne klasat fillore. Edhe jo te vemi ne shkolle te larte e te mesojme MS Dos apo Qbasic. Keto jane turpera...

----------


## Ardi_Pg_ID

Ajo eshte e drjete e jo vetem kapaciteti I vogel qe lejon aksesi por edhe vete engine qe perdor aksesi per databese eshte shume e limituar te ralla jane ato kompani qe mund te perdorin akses pothuajse nuk ekzistojne fare sikunderse edhe foxpro. Kompania e fundit qe kam pare te perdore foxpro ka qene city bank edhe kjo per arsye se programi qe ata perdornin ne ate kohe nuk developeshe me pasi kompania e prodhimit kish dale jashte bisnesit. Qe ata te kalonin ne swift edhe payplus usa programe qe kompania ku une punoj I prodhon u deshen mijra ore per konvertimin e keti database nga foxpro ne SQL. Nese qe mos dalim nga tema access te limiton shume ne mbrojtjen e programit. Menyra me e mire qe une mendoj per kete mbrojtje eshte ajo qe kete ne amerike quhet "dongle" qe me pare ka qene nje LPT konektor me EPROM te rishkrueshem edhe keto kohet e fundit USB Flash disk qe kane EPROM te rishkrueshem. Ne kete menyre nuk mundesh te kopjosh ose te perdoresh programin pa patur kete paisje te lidhur me kompjuterin. Ato kompani qe akoma perodrin access si mini db per info kete menyre perdorin.

Ardi

----------


## klodj

Ardi i vleresoj shume pergjigjet e tua dhe nuk e di nqs mund te me ndihmosh per nje problem qe kam ne lidhje me postimin para ketij per printimin e faturave te vogla me printer termik.
Deri tani nuk eshte pergjigjur askush dhe ndoshta mund te ma dergosh me e-mail.
Adresa ime eshte: *Moderatori*: _Mos publikoni ne forum e-mailin personal; perdorni mesazhet private_.

Do te isha shume mirnjohes nqs do mund te me ndohmoje sado pak.

----------


## Islam_Beka

klodje. a kishe mujt me dhan ni shembull bi ban ni form ne access e me shkrujt qat kod 
se une e provova por nuk pom ban
nese mundesh me  kriju ni form per shpejti e e me dergu .

----------

