[개발/delphi] 자기 자신을 지우는 프로그램 만들기(delphi)
from. 나이렉스 홈페이지 팁란( http://www.nilex.net/ )
안치봉( ahn@nilex.co.kr )
자기 자신을 지우는 프로그램은 대부분 인스톨에 관계된것 중에서 Uninstall 프로그램
에 적용이 됩니다. 아래는 그 소스입니다. 간단히 설명을 드리자면 원래 실행중인 프
로그램을 당장(?) 삭제하는것은 힘듭니다. 그래서 아래꽁수는 시스템에서 지원해주는
기능을 사용합니다. 자세한건 소스를 직접 분석해 보시기 바랍니다 - 백문이 불여 일
행!
...
...
procedure TForm1.RemoveFile(FileName: String);
var
ShortDest: array[0..400] of Char;
WINInit: TINIFile;
begin
case GetWindowsVerType of
wvWin95: begin
WINInit := TINIFile.Create('WININIT.INI');
try
GetShortPathName(PChar(FileName),ShortDest,SizeOf(ShortDest));
WINInit.WriteString('Rename','nul',StrPas(ShortDest));
finally
WINInit.Free;
end;
end;
else
MoveFileEx(PChar(FileName),Nil,MOVEFILE_REPLACE_EXISTING or MOVEFILE_DELAY_U
NTIL_REBOOT);
end;
end;
function TForm1.GetWindowsVerType: TWindowsVerType;
var
OSVersionInfo: TOSVersionInfo;
Version: String;
begin
Result := wvUnidentified;
OSVersionInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
if not GetVersionEx(OSVersionInfo) then
raise Exception.Create('Could not get information about the current version
of Windows');
Version := IntToStr(OSVersionInfo.dwMajorVersion)+'.'+IntToStr(OSVersionInfo.d
wMinorVersion);
case OSVersionInfo.dwPlatformId of
VER_PLATFORM_WIN32s: Result := wv31Win32;
VER_PLATFORM_WIN32_WINDOWS: Result := wvWin95;
VER_PLATFORM_WIN32_NT: begin
if Pos('3.5',Version) > 0 then
Result := wvWinNT351
else
Result := wvWinNT;
end;
else
Result := wvUnidentified;
end;
end;
반응형
'Delphi, RadStudio' 카테고리의 다른 글
[개발/delphi] 윈도우즈 언어 알아보기 (0) | 2011.12.20 |
---|---|
[개발/Delphi] TWebbrowser 의 찾는 문자열에 형광팬 효과 주기 (0) | 2011.12.20 |
[개발/delphi] how to register an OCX (0) | 2011.12.12 |
[개발/delphi] Starting and stopping Windows services (0) | 2011.12.12 |
[개발/delphi] how to have an exe file delete itself (0) | 2011.12.12 |
댓글