Tjena. För det första: Du kan fetglömma att ha ett absolut 100%-skydd. Ett program som körs på en dator kan alltid debuggas på någon nivå; även om det är rejält besvärligt nu för tiden. VBA-kod är tämligen oskyddad. Det finns program som knäcker lösenordskyddet på en sekund! Aha, och låta excell anropa en ocx eller dll i stället för VBA-kod direkt? "En kedja är aldrig starkare än sin svagaste länk". Jag vill mest skydda mig mot "vanlig kopiering", dvs inte mot någon form av hackers eller kodknäckare. Ja, då är det nog det enklaste. Skriv kod som skyddar bladet, lösenordsskydda VBA-koden. VB kan jag.. men är VBA bara att skriva samma typ av kod? Hur gör man anrop till Dll:er och ocx:er då? Ja, i stort sett, det är småsaker som skiljer sig. Såna anro gör du genom att importera grejerna i projektet eller anropa via fula "declare function ..."-grejer. halvt off-tpic: Okej, må så vara hänt; spelar ingen roll. Kommer man in i VBA-delen kan man manipulera bort grejerna oavsett om de ligger i en ocx, dll eller rakt i koden.Licensskydda sin Excellapplikation med VBA?
Jag har en excellapplikation som jag vill förhindra att den sprids för vinden och har börjar kika lite på VBA för att göra en licenskontroll.
Jag tror inte det är några större problem att hitta på en kontroll, men hur är de när väl koden är på plats? Kan vem som helst debugga den då, eller är det en kompilerad kod? Går det att skydda koden på något sätt?
/ASv: Licensskydda sin Excellapplikation med VBA?
För det andra: Licensskydd är hyfsat svåra att få till och i synnerhet att få att fungera på ett bra sätt. Du kan göra hyfsade lösningar, men det krävs oftast inte jättemycket för att någon ska förstå hur det funkar och använda det ändå.
Vad gäller VBA-koden; den går att skydda med lösenordsskydd. Exakt hur det fungerar under huven är jag inte säker på, men det bör vara hyfsat säkert. Det är bara att högerklicka på projektet i VBA-editorn och välja Properties - protection, eller något i den stilen.
Då kan ingen röra eller debugga koden, såvida man inte har angett lösenord.Sv:Licensskydda sin Excellapplikation med VBA?
För att vara på säkra sidan kan man istället göra om VBA-projektet till ett COM-tillägg med t.ex. VisualBasic och få en kompilerad kod istället.Sv: Licensskydda sin Excellapplikation med VBA?
...då måste jag nog även göra något trixande så man inte kan "remma" bort anropen till dll-en?Sv:Licensskydda sin Excellapplikation med VBA?
Om anropen sker via VBA så kommer man åt dem precis lika lätt eller svårt som att komma åt koden innan.
Frågan är egentligen till vilken målgrupp du ger programmet. Hur hård säkerhet behöver du?
Är det sannolikt att någon skulle betala en tusenlapp för att bryta sig in i ditt program och komma åt koden?
Att låsa VBA-koden är ofta en fullgod lösning; jag känner inte till några gratisprogram som kan knäcka lösenordet, men många som kostar pengar. Sv: Licensskydda sin Excellapplikation med VBA?
Kort sagt vill jag göra det svårare att bara kopiera excellprogrammet till nästa maskin.
VBA låter som att det kan göra detta tycker jag mig höra.
Finns det något bra tips på hur man gör detta?Sv:Licensskydda sin Excellapplikation med VBA?
Det svåra är att få ett rimligt licensskydd.
Det finns två svårigheter, dels att avgöra hur du ska identifiera en användare, dels att hur du ska se till att just den användaren är den enda som ska kunna använda applikationen.
För identifiering har du väl ett par alternativ; en möjlighet är att använda Application.Username, en annan att använda lite API-anrop för att få fram lite siffror av olika slag.
För att se till att en specifik användare är den riktiga kan du t.ex. göra en hashning av en kombination av olka identifierare och använda den hashen som lösenord.Sv: Licensskydda sin Excellapplikation med VBA?
Sv:Licensskydda sin Excellapplikation med VBA?
Men som sagt; jag tror inte att det är rätt väg att gå. Du måste fortfarande anropa funktionerna, och kommer man åt koden så går det att gå förbi hela systemet ändå.
Satsa antingen på en riktig kommersiell möjlighet, eller gör en hyfsat enkel, lägg den i VBA-kod, och lås koden. Sv: Licensskydda sin Excellapplikation med VBA?
Det finns gratisprogram som knäcker VBA-lösenord. Jag har själv använt det då jag glömt lösenordet. Det var inte brute-force, det gick på någon sekund.Sv:Licensskydda sin Excellapplikation med VBA?