Q&A

  • 레지스트리 등록후 실행경로가 달라지는 이유가 뭔지요???.
윈도우 시작시 자동 실행 기능을 구현하기 위하여 레지스트리를 이용하여 시작프로그램에 등록하였습니다.

물론 윈도우 부팅시 자동 실행은 정상적으로 이루어집니다.

시험 운영체제는 윈도우 98이구요

저는 코딩하기를 ...

MYDIR :=GetCurrentdir;

reg.OpenKey('SoftwareMicrosoftWindowsCurrentVersionRun',false);
   reg.WriteString('Test', MYDIR+'Test.exe');
이런식으로 등록하였습니다.

버튼을 누르면 등록되게 해서 실행시켜보니 레지스트리에 정상등록이 되었습니다.
디버깅 모드에서 현재 경로를 보니 등록한 경로가 정상적으로 나왔습니다.
ShowMessage(MYDIR);  
그런데 윈도우를 재시작하고 자동실행까지는 잘되는데.. 엉뚱한 경로에서 수행이 되는것입니다.!!! 경로를 더듬어보니 아 글쎄.. C:WINDOWS에서 프로그램이 수행된 것이었습니다.
저는 MYDIR경로의 TEST.EXE를 당연히 실행하는줄 알았는데 말이죠.
그게 아니더군요.

이렇게 해서 생기는 문제가 있습니다. INI파일의 값을 전혀다른곳에서 불러온다는 겁니다. 폼에 적용되는 값이 엉뚱한 값이 적용됩니다.
MYDIR 디렉토리안의 TEST.INI 파일을 적용해야되는데..
엉뚱하게도 C:WINDOWS 에 TEST.INI파일의 값을 불러다가 적용시키더군요
이걸 어떻게 해결해야할지 고수님덜의 조언부탁드립니다.
저도 생각해보겠습니다. !!  쉽게 해결될거 같은뎅..에휴. ..











1  COMMENTS
  • Profile
    mute 2002.04.11 09:22
    에 가설라므네......걍 생각난는데로 몇자 적습니다.

    아...정말 생각하는건 시로...쩝...

    ini파일 생성하실때 걍 이름만 주고 생성하셨군여

    예를 들면 요렇게...  ini := TInifile.Create('test.ini');

    그럼 기본적으로 ini파일이 c:windows에 생성됩니다.

    코딩이 이런식으로 되어있다면 항상 c:windowstest.ini를 읽어올겁니당.

    구래서 ini파일 생성하실때 정확한 경로를 주시면 됩니다.

    예를 들면

    ini := TInifile.Create(ExtractFilePath(Application.ExeName)+'test.ini');

    이런식으로 하면 자신이 실행되는 경로 아래의 ini를 읽어오겠죠? 아마도...캬캬캬

    그럼 즐프