Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
쉐어웨어 배포시 사용제한 및 사용자 등록....
[질문] 쉐어웨어 배포시 사용제한 및 사용자 등록....
웨어웨어 프로그램과 같이 소프트웨어에 사용일자를 제한 하거나...
등록을 통해 사용일자 제한을 해제 하는 거와 같은것은 어떻게해야 하나요?
1
COMMENTS
구창민
•
2001.07.21 20:55
이기준 wrote:
> [질문] 쉐어웨어 배포시 사용제한 및 사용자 등록....
>
> 웨어웨어 프로그램과 같이 소프트웨어에 사용일자를 제한 하거나...
>
> 등록을 통해 사용일자 제한을 해제 하는 거와 같은것은 어떻게해야 하나요?
>
이거 일전에 뽁기씨가 올려논 글인데 도움이 될거 같네여
항상 즐거운 프로그래밍 하시길~~
제가 일하는곳에 있는 개발프로그램중에 한 부분입니다..
소스가 좀 엉망인데요 (민망~)
대충 설명하면
맨처음 그 프로그램이 실행될때 레지스트리값이 존재하는지 판단하고
없으면 첨 실행된 시스템날짜를 Encode시켜서 레지스트리에 보관하고
담에 다시 실행할때면 실행되는 날짜와 레지스트리에 기록된 날짜와 비교해서
한달이 넘으면 사용을 막아버립니다..
근데 중요한건 한번 한달이 넘어버리면 날짜를 1900-01-01로 기록해버려서
사용자가 임으로 날짜를 조작해서 사용하지못한다는거죠..
(이거 꽁수인것같음^^)
밑에 소스보시면
Section 부분이 있는데요 이 섹션이름을 사용자가 눈치못채게
어려운 이름이 바꾸시면 좋겠죠?
예를들어 'Usb Controller Setting' 등의 이름..
아래에선 폼show에다 걸었는데 원하시는 곳에 루틴을 활용하시기바랍니다..
그리고 소스 맨위에 상수로 값만 변경하면 데모 및 정품을 쉽게 변경가능할겁니다..
사실 전 이런거(날짜막아버리는거..) 젤 싫어하는데
회사에 있다보니 어쩔수없는 현실이군여..쩝..
그냥 이렇게도 쓸수있다는걸로 참고하세요
에러난다면 도망가야쥐..^^
좋은하루되세요~
Const ShareWare = False; // 데모버전(True) 정품(False) 구분
implementation
..
..
procedure TISPASSF.FormShow(Sender: TObject);
begin
if ShareWare then ProgramRegist(Sender);
end;
procedure TISPASSF.ProgramRegist(Sender: TObject);
var FIniFile:TRegIniFile;
Regist:TRegistry;
Section,Key,sPName:string;
a,b:Dword;
sRSV:TStrings;
H, C, D: String;
Ini :TIniFile;
BsMoneyCount, InputString: String;
function EncodeLock(H:String) : String;
var Str : String;
i,j : integer;
begin
j := Length(H);
Str := H;
for i :=1 to Length(H) do begin
Str[i] := chr(ord(Str[i]) + ord(Str[j]));
Dec(j);
end;
Result := Str;
end;
function DecodeLock(H:String) : String;
var Str : String;
i,j : integer;
begin
j := Length(H);
Str := H;
for i :=1 to Length(H) do begin
Str[j] := chr(ord(Str[j]) - ord(Str[i]));
Dec(j);
end;
Result := Str;
end;
begin
//Registry 읽고 쓰기
sRSV := TStringList.Create;
Key := '';
sRSV.Clear;
Regist := TRegistry.Create;
Regist.RootKey := HKEY_CURRENT_USER;
FiniFile := TRegIniFile.Create('SOFTWARE'); // License
Section := 'License'; // <= 이부분에 류응철님이 원하시는 레지스트리이름을 적으세요~
FiniFile.ReadSectionValues(Section,sRSV);
if (sRSV.Count = 0) then // 없으면 프로그램 시작일을 Registry에 저장한다.
begin
H := EncodeLock(FormatDateTime('YYYY-MM-DD',Date));
FiniFile.WriteString(Section,Section,H);
Application.MessageBox('"모모모" 프로그램으로 오신것을 환영합니다.'+#13#13 +
'이 프로그램은 연습용으로써 '+ #13#13 +
'최초 실행일부터 한달(30일)간 사용할 수 있습니다.', MB_OK);
Key := FiniFile.FileName;
sRSV.Free;
FiniFile.Free;
Regist.Free;
end else
begin
a := Pos('=',sRSV[0]); b := Length(sRSV[0]);
H := DecodeLock(Copy(sRSV[0],a+1,b-a));
if (StrToDate(H) < Date - 30) or (StrToDate(H) > Date + 30) then
begin
if H <> '1900-01-01' then
begin
H := EncodeLock('1900-01-01');
FiniFile.WriteString(Section,Section,H);
end;
Application.MessageBox('"모모모" 프로그램 사용기간이 만료되었습니다.'+#13#13 +
'정품을 구입하시면 제한없이 사용할 수 있으며 ' +#13#13 +
'많은 해택을 드립니다.' ,'확인', MB_OK);
sRSV.Free;
FiniFile.Free;
Regist.Free;
Application.Terminate;
end else
begin
Application.MessageBox('"모모모" 프로그램으로 오신것을 환영합니다.'+#13#13 +
'정품을 구입하시면 제한없이 사용할 수 있으며 ' +#13#13 +
'많은 해택을 드립니다.','확인', MB_OK);
Key := FiniFile.FileName;
sRSV.Free;
FiniFile.Free;
Regist.Free;
end;
end;
end;
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
김대혁
2001.07.22 01:21
0
COMMENTS
/
0
LIKES
델파이3.0 , 오라클8 버전
김대혁
2001.07.22 01:21
0
COMMENTS
/
0
LIKES
델파이3.0 , 오라클8 버전
전진만
•
2001.07.21 23:52
1
COMMENTS
/
0
LIKES
IE Extention 중에....
나무..
•
2001.07.22 19:30
icon 이미지를 두개 합치는 걸루 기억하는디 맞는지 몰겠네여. --' 그 때 보니까 지가 알아서 짤라쓰더...
인어공주
•
2001.07.21 23:24
2
COMMENTS
/
0
LIKES
DBGridEH 에 관한 질문 입니다
짱구
•
2001.07.23 18:28
안녕하세요.. DBGridEh의 속성중 UseMultiTitle라는것을 True로 하시고 각컬럼의 Caption을 다음과같이 ...
나무..
•
2001.07.22 19:14
그리드 안에 필드이름을 다수의 칸으로 쓰실려면, 스트링그리드를 쓰세여. 스티링그리드에 보면 fixedrows...
어린왕자
•
2001.07.21 22:58
5
COMMENTS
/
0
LIKES
알고리즘 문제예요.고수님
나무..
•
2001.07.22 17:26
님이 말하신거 트리 검색 같은데 트리는 하나 원소에 두개의 방향만 갖구 있죠. 예) A -> B -> C ->...
어린왕자
•
2001.07.23 01:25
문제의 발단은 트리에서 시작이 되었는데요.. 집합으루 풀면 더 쉬울꺼 같아요.. S1 = (a1,b1) S2 = (...
이명훈
•
2001.07.22 00:32
집합을 사용하시면 편할 거 같은데요.. 일단 2차원 배열들에 값을 집어넣으시고.. 집합2개를 생성합...
loke
•
2001.07.22 03:25
제 생각에 이명훈 님 처럼 하게 되면 (A,B) (D,G) (C,E) (B,C) (C,F) 처음 (A,B) 를 [가]그룹이...
이명훈
•
2001.07.22 03:31
그렇군요.. 죄송합니다..^^; 저도 겜방이라서 그냥 생각해봐서 실수가 있었네요.. 집에가서 함 해봐야겠...
초보는힘들어
2001.07.21 21:39
0
COMMENTS
/
0
LIKES
fbarcod 콤포넌트 출력이 잘 안되요..ㅜㅜ
구창민
•
2001.07.21 21:01
5
COMMENTS
/
0
LIKES
Re: word 형 변수선언의 비밀에 대해서 알고 싶습니다.
왕초
•
2001.07.21 22:02
구창민
•
2001.07.21 22:15
왕초
•
2001.07.21 22:22
구창민
•
2001.07.21 22:49
왕초
•
2001.07.22 00:40
우뢰매
•
2001.07.21 20:32
2
COMMENTS
/
0
LIKES
텔넷 이용시 하나의 IP와 Port번호로 다중접속이 되는 원리??
구창민
•
2001.07.21 20:53
우뢰매 wrote: > 텔넷 이용시 하나의 IP와 Port번호로 다중접속이 되는 원리(??)를 알고싶습니다. > 예를...
우뢰매
•
2001.07.23 23:00
검색어 : ip address tcp tcp/ip http ClientSocket ServerSocket 유동 고정 채팅 메신저 > 그 동작은 클...
이기준
•
2001.07.21 20:28
1
COMMENTS
/
0
LIKES
쉐어웨어 배포시 사용제한 및 사용자 등록....
[질문] 쉐어웨어 배포시 사용제한 및 사용자 등록.... 웨어웨어 프로그램과 같이 소프트웨어에 사용일자를 제한 하거나... 등록을 통해 사용일자 제한을 해제 하는 거와 같은것은 어떻게해야 하나요?
구창민
•
2001.07.21 20:55
이기준 wrote: > [질문] 쉐어웨어 배포시 사용제한 및 사용자 등록.... > > 웨어웨어 프로그램과 같이 ...
xxx
•
2001.07.21 20:17
1
COMMENTS
/
0
LIKES
*.gif 이미지 파일을 가져올수 있는 방법은?
구창민
•
2001.07.21 21:02
xxx wrote: > *.gif 이미지 파일을 가져올수 있는 방법은? > image 콤포넌트에 GIF이미지 파일이 오픈이 ...
박준
•
2001.07.21 20:09
2
COMMENTS
/
0
LIKES
변수에 저장된 비교조건으로 IF문 수행방법은?
구창민
•
2001.07.21 21:06
박준 wrote: > > 델파이 초보입니다. > > 변수에 들어있는 비교조건으로 IF문을 수행하는 방법은 ...
나무..
•
2001.07.22 17:36
변수(문자열)에 들어 있는 값을 가지고 어떤 연산을 한다는 것은 파서(구문 분석기 : 대충 해석하믄)를 쓴...
박준
•
2001.07.21 20:03
1
COMMENTS
/
0
LIKES
memo필드를 select하는 방법-급급급...
구창민
•
2001.07.21 21:09
박준 wrote: > > 델파이 초보자입니다. > paradox 에 memo필드로 들어있는 내용을 select Like 문을 ...
park
2001.07.21 17:56
0
COMMENTS
/
0
LIKES
델파이 5 평가판에서 DB사용법?
송시중
•
2001.07.21 16:55
5
COMMENTS
/
0
LIKES
자작 웹브라우저에서 POST방식 데이타를 넘기는 법은?
구창민
•
2001.07.21 21:10
송시중
•
2001.07.22 03:09
이명학
•
2001.07.22 11:35
송시중
•
2001.07.22 22:37
화랑
•
2001.07.23 23:59
목동
•
2001.07.21 13:29
1
COMMENTS
/
0
LIKES
stack overflow 에러는?
htjulia
•
2001.07.23 04:28
stack overflow라는 것은 찾아보시면 잘 나와 있을 것구요, 밑의 쿼리에서 두개의 테이블을 열때 문제가...
베라
•
2001.07.21 08:51
2
COMMENTS
/
0
LIKES
[쿼리질문!] 쿼리로 해결할수 있는 방법을 알려주세요.급급!!!!!!!!!!!!!
어린왕자
•
2001.07.23 05:28
베라 wrote: > 쿼리로 데이타를 불러서 그중에 특정필드값이 같을때의 그 같은 값들의 수량을 합해서 > ...
얀
•
2001.07.21 18:35
베라 wrote: > 쿼리로 데이타를 불러서 그중에 특정필드값이 같을때의 그 같은 값들의 수량을 합해서 > ...
델피초보
•
2001.07.21 08:16
1
COMMENTS
/
0
LIKES
messagebox에 관한질문 ㅠㅠ
박장용
•
2001.07.21 19:49
아래보면 type이 틀리지요.. function MessageBox(const Text, Caption: PChar; Flags: Longint): Integer...
이지용
2001.07.21 06:55
0
COMMENTS
/
0
LIKES
excel화일을 oracle로 넣을려고하는데요.....
델초보-긴급!!!
•
2001.07.21 06:29
2
COMMENTS
/
0
LIKES
String(13자리숫자)->Integer변환
loke
•
2001.07.22 03:59
델초보-긴급!!! wrote: > string으로된 13자리 문자를 Interger로 변환하여 계산하려합니다. > strToInt6...
델초보-긴급!!!
•
2001.07.23 03:55
고맙습니다. 역시 정확한 값이 나오네요... debug화면에서는 이상한 값이 나오길래 제대로 되지 않는지 ...
얀
•
2001.07.21 06:11
1
COMMENTS
/
0
LIKES
Query 컴포넌트 동적생성~도움좀 부탁(급해요.....)
박장용
•
2001.07.21 19:56
오류메세지자체는 DB Table을 찾지 못하는 것 같습니다.. 일단..SQL문에 table명을 기술해 보시고 안되면 ...
이기준
2001/07/21 20:28
Views
380
Likes
0
Comments
1
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> [질문] 쉐어웨어 배포시 사용제한 및 사용자 등록....
>
> 웨어웨어 프로그램과 같이 소프트웨어에 사용일자를 제한 하거나...
>
> 등록을 통해 사용일자 제한을 해제 하는 거와 같은것은 어떻게해야 하나요?
>
이거 일전에 뽁기씨가 올려논 글인데 도움이 될거 같네여
항상 즐거운 프로그래밍 하시길~~
제가 일하는곳에 있는 개발프로그램중에 한 부분입니다..
소스가 좀 엉망인데요 (민망~)
대충 설명하면
맨처음 그 프로그램이 실행될때 레지스트리값이 존재하는지 판단하고
없으면 첨 실행된 시스템날짜를 Encode시켜서 레지스트리에 보관하고
담에 다시 실행할때면 실행되는 날짜와 레지스트리에 기록된 날짜와 비교해서
한달이 넘으면 사용을 막아버립니다..
근데 중요한건 한번 한달이 넘어버리면 날짜를 1900-01-01로 기록해버려서
사용자가 임으로 날짜를 조작해서 사용하지못한다는거죠..
(이거 꽁수인것같음^^)
밑에 소스보시면
Section 부분이 있는데요 이 섹션이름을 사용자가 눈치못채게
어려운 이름이 바꾸시면 좋겠죠?
예를들어 'Usb Controller Setting' 등의 이름..
아래에선 폼show에다 걸었는데 원하시는 곳에 루틴을 활용하시기바랍니다..
그리고 소스 맨위에 상수로 값만 변경하면 데모 및 정품을 쉽게 변경가능할겁니다..
사실 전 이런거(날짜막아버리는거..) 젤 싫어하는데
회사에 있다보니 어쩔수없는 현실이군여..쩝..
그냥 이렇게도 쓸수있다는걸로 참고하세요
에러난다면 도망가야쥐..^^
좋은하루되세요~
Const ShareWare = False; // 데모버전(True) 정품(False) 구분
implementation
..
..
procedure TISPASSF.FormShow(Sender: TObject);
begin
if ShareWare then ProgramRegist(Sender);
end;
procedure TISPASSF.ProgramRegist(Sender: TObject);
var FIniFile:TRegIniFile;
Regist:TRegistry;
Section,Key,sPName:string;
a,b:Dword;
sRSV:TStrings;
H, C, D: String;
Ini :TIniFile;
BsMoneyCount, InputString: String;
function EncodeLock(H:String) : String;
var Str : String;
i,j : integer;
begin
j := Length(H);
Str := H;
for i :=1 to Length(H) do begin
Str[i] := chr(ord(Str[i]) + ord(Str[j]));
Dec(j);
end;
Result := Str;
end;
function DecodeLock(H:String) : String;
var Str : String;
i,j : integer;
begin
j := Length(H);
Str := H;
for i :=1 to Length(H) do begin
Str[j] := chr(ord(Str[j]) - ord(Str[i]));
Dec(j);
end;
Result := Str;
end;
begin
//Registry 읽고 쓰기
sRSV := TStringList.Create;
Key := '';
sRSV.Clear;
Regist := TRegistry.Create;
Regist.RootKey := HKEY_CURRENT_USER;
FiniFile := TRegIniFile.Create('SOFTWARE'); // License
Section := 'License'; // <= 이부분에 류응철님이 원하시는 레지스트리이름을 적으세요~
FiniFile.ReadSectionValues(Section,sRSV);
if (sRSV.Count = 0) then // 없으면 프로그램 시작일을 Registry에 저장한다.
begin
H := EncodeLock(FormatDateTime('YYYY-MM-DD',Date));
FiniFile.WriteString(Section,Section,H);
Application.MessageBox('"모모모" 프로그램으로 오신것을 환영합니다.'+#13#13 +
'이 프로그램은 연습용으로써 '+ #13#13 +
'최초 실행일부터 한달(30일)간 사용할 수 있습니다.', MB_OK);
Key := FiniFile.FileName;
sRSV.Free;
FiniFile.Free;
Regist.Free;
end else
begin
a := Pos('=',sRSV[0]); b := Length(sRSV[0]);
H := DecodeLock(Copy(sRSV[0],a+1,b-a));
if (StrToDate(H) < Date - 30) or (StrToDate(H) > Date + 30) then
begin
if H <> '1900-01-01' then
begin
H := EncodeLock('1900-01-01');
FiniFile.WriteString(Section,Section,H);
end;
Application.MessageBox('"모모모" 프로그램 사용기간이 만료되었습니다.'+#13#13 +
'정품을 구입하시면 제한없이 사용할 수 있으며 ' +#13#13 +
'많은 해택을 드립니다.' ,'확인', MB_OK);
sRSV.Free;
FiniFile.Free;
Regist.Free;
Application.Terminate;
end else
begin
Application.MessageBox('"모모모" 프로그램으로 오신것을 환영합니다.'+#13#13 +
'정품을 구입하시면 제한없이 사용할 수 있으며 ' +#13#13 +
'많은 해택을 드립니다.','확인', MB_OK);
Key := FiniFile.FileName;
sRSV.Free;
FiniFile.Free;
Regist.Free;
end;
end;
end;