시작하기 전에

1. FileInstall 명령어를 아셔야합니다. 여기를 클릭하시면 명령어 설명으로 이동합니다

2. DllCall 명령어를 아셔야합니다. 여기를 클릭하시면 설명으로 이동합니다.

3. 외부 DLL파일이 필요합니다. 여기를 클릭해 다운로드페이지로 이동합니다

가상화 방법

bxsdk32.dll 파일을 소스코드파일과 동일한 경로에 위치시키세요.

특정 폴더를 가상화시키기 위한 코드는 아래와 같습니다.

hModule := DllCall("LoadLibrary", str, A_ScriptDir "\bxsdk32.dll") ; DLL파일을 불러온다
DllCall("bxsdk32\BoxedAppSDK_Init") ; DLL파일을 시작한다
DllCall("bxsdk32\BoxedAppSDK_CreateVirtualDirectoryA", AStr, 폴더경로, Int, 0) ; 폴더경로 를 가상화한다

가상화를 종료하고, DLL파일을 닫기 위한 코드는 아래와 같습니다.

DllCall("bxsdk32\BoxedAppSDK_Exit") ; 가상화를 종료한다
DllCall("FreeLibrary", "UInt", hModule) ; DLL파일을 닫는다
  1. 까망 2015.02.27 10:35 신고

    질문있어요
    폴더 가상화 했는데 100M정도요
    근데 '시스템 호출에 전달된 데이터 영역이 너무 작습니다' 오류 메세지가 뜨는데
    100M면 너무 큰가요?

    • BlogIcon 예지력 2015.02.27 18:04 신고

      아뇨, dll에 따른 문제는 아닐껍니다. 다른 요인때먼이라고 생각되네요
      근데100mb 정도의 파일을 가상으로 추가하고싶으시면 패커나 BinRun 라이브러리로 애초 파일에 내장해두는것이 좋을거같습니다.

  2. 용가리맨 2015.03.02 21:56 신고

    가상화 하면 장점이 먼가요

    • BlogIcon 예지력 2015.03.03 22:50 신고

      실제 디스크를 쓰지않으니, 리소스파일들을 컴퓨터에 설치할필요가없어 깔끔한 싱글 파일로 배포가 가능하겠죠?
      외장하드같은 경우에는 깨울필요가없고

  3. 요이요이 2015.04.14 00:31 신고

    안녕하세요 질문 하나만 드리고싶은데요

    혹시 L버전에서는 정상작동하는데 왜 베이직버전에선 정상작동을 안할까요? 되게하는 방법은 없나요..?
    버전별 DLLCall을 열어보았는데 특별히 다른점은없더라구용.. 답변주시면 감사하겠습니다 ^^!

    • BlogIcon 예지력 2015.04.15 22:43 신고

      문법에 조금 변경이 생기고, 기능추가가 L에서 됬으니까요
      베이직은 업데이트가 중단된지 7-8년 정도 됬습니다...

  4. 최고에요 2015.05.02 18:44 신고

    오토핫키 베이직 버전을 사용해서 가상화할수있는 방법은 없을까요?
    이미지 화일이 너무 많아 지저분하고 , 어떤 이미지를 이용하는지 노출되면 안되는 까닭에 여기까지 왔습니다 만, 제가 베이직밖에는 쓸줄몰라서 곤혹스럽네요.
    다른 방법은 없을까요...

    질문한김에 질문하나더 드려봅니다.
    텍스트문서로 만들어진 로그인정보를 불러오는 매크로를 작성했는데.. id와 password가 그대로 노출되있어서 해결책이 없을까 싶습니다.
    감사합니다.

    • BlogIcon 예지력 2015.05.04 21:37 신고

      베이직은 제가 사용을 안해서 방법을 모르겠습니다

      아이디와 패스워드가 그대로 노출된다는게 텍스트문서에 표기되어있기 때문인가요? 그렇다면 텍스트문서를 암호화하는 방법이 있겠네요

  5. 최고에요 2015.05.04 22:59 신고

    아.. 그러니까 암호화하면 되겠다는건 알겠는데.. 그 방법을 어찌해야할지 몰라서요... 너무 막연한질문인가요..

    • BlogIcon 예지력 2015.05.08 08:42 신고

      AES 암호화 등의 방법을 사용해서 텍스트파일을 암호화하고
      오토핫키에서 FileRead나 다른방법으로 텍스트파일을 읽을떄 복호화 과정을 거쳐야합니다.
      구글링으로 autohotkey encryption 찾아보면 많이 나오니까 확인해보세요. 단순히 댓글로 설명하기에는 관련 소스가 너무 많습니다.

  6. dww 2016.02.21 19:15 신고

    혹시예지력님이 올리신 gui 스킨을파일을 가상화하려고하는데
    아무리 해봐도 안되네요 ㅠㅠ 도움좀

  7. 가상화궁금증 2016.03.02 18:12 신고

    안녕하세요 테일에서도 가상화 방법보고 예문을 가지고 해봤는데요..
    hModule := DllCall("LoadLibrary", str, A_ScriptDir "\bxsdk32.dll") ; DLL파일을 불러온다
    DllCall("bxsdk32\BoxedAppSDK_Init") ; DLL파일을 시작한다
    DllCall("bxsdk32\BoxedAppSDK_CreateVirtualDirectoryA", AStr, A_Temp, Int, 0) ; 윈도우 임시폴더를 가상화
    FileInstall, test.txt, %A_Temp%\test.txt, 1 ; 임시폴더에 test.txt 파일을 설치
    Run, %A_Temp%\test.txt ; 임시폴더의 test.txt 파일 실행
    return

    이대로 실행을하면 test.txt파일을 찾을수 없습니다라고 뜹니다.

    그런데 또 동봉된 예문 jpg로된 스크립은 됩니다.. 어떤부분이 문제일가요?

  8. 2018.10.25 05:12

    비밀댓글입니다

  9. 드럼맨 2018.10.25 05:20 신고

    안녕하세요. 좋은글 감사의말씀 드리며 질문 드립니다.
    32비트의 exe파일을 가가상화하면 가상화가 무척잘됩니다. 하지만 64비트전용 exe파일시 오류가 생기거나 가상화가 되질않습니다.
    우선 기존의 스크립트와 dll로 실행시
    Error failed attempt to launch program or document ~~블라블라~
    사용자가 작업을 취소했습니다.
    run,실행파일
    이런 오류가 생기기에 딜파일이 32인게 문제인가싶어서 첨부파일중 bxsdk64.dll로 교체해준 후 아래와같이32부분을 64로 수정을했습니다.

    hModule := DllCall("LoadLibrary", str, A_ScriptDir "\bxsdk64.dll") ; DLL파일을 불러온다
    DllCall("bxsdk64\BoxedAppSDK_Init") ; DLL파일을 시작한다
    DllCall("bxsdk64\BoxedAppSDK_CreateVirtualDirectoryA", AStr, 폴더경로, Int, 0) ; 폴더경로 를 가상화한다
    64로 수정후에는 오류는 생기지 않지만 가상화가 되지않고 단순한 파일인스톨후 런이 된것처럼 되버립니다.
    제 힘으로는 문제해결이 힘들어 도움요청드립니다.


    • BlogIcon 예지력 2018.10.25 08:11 신고

      시도를 못해봐서 확답은 못드리겠지만 64비트로 실행하시면 코드수정을 하셔야할거에요

      Astr > Str 또는 WStr 으로
      Int > UInt, Ptr 으로요

  10. 드럼맨 2018.10.25 21:50 신고

    빠른답변 감사드립니다.
    hModule := DllCall("LoadLibrary", str, A_ScriptDir "\bxsdk64.dll") ; DLL파일을 불러온다
    DllCall("bxsdk64\BoxedAppSDK_Init") ; DLL파일을 시작한다
    DllCall("bxsdk64\BoxedAppSDK_CreateVirtualDirectoryA", Str, 폴더경로, UInt, 0) ;
    답변 주신것토대로등으로 여려조합 해봤지만 증상 동일하네요 ㅠㅠ..
    나중에 여유되실 때 한번만 실험부탁드리겠습니다..

+ Recent posts