«   2012/11   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30



우리가 사용하는 많은 브라우저들은 다 각각의 단점과 버그를 안고 있다.

사용자들은 이 장단점을 비교하여 나에게 손해가 적으면서 능률을 올려주는 브라우저를 선택하게 된다.

(혹은 귀차니즘 200% 발동으로 각 시스템의 기본 브라우저를 사용하기도 한다.)

나는 내가 자주 쓰는 브라우저 중 하나인 Google Chrome(이라 '크롬')을 사용하고 있는데 나의 워크스테이션의 원격세션에 관한 설정을 만지던 도중 크롬 버그를 알아냈다.


사람들이 많이 애용하는 Teamviewer이나 RemoteCall(네이트온 원격제어도 이 프로그램 사용), VNC류 등의 원격제어 프로그램을 많이 사용한다.

하지만 이러한 원격제어 프로그램의 단점은 콘솔의 사용자와 클라이언트 사용자가 실시간으로 동일 화면을 보면서 작업을 한다는 점이다.

이 점은 기존의 원격제어에서는 구현되지 않은 기능이므로 장점이라고 볼 수도 있지만 작업 환경에 따라선 그렇지 않다.

만약 서로 다른 작업을 하는 사람이 서로 다른 화면을 개개로 작업을 해야하는 경우에는 어떻게 할 것인가?

나의 워크스테이션은 원격지에서도 작업을 하지만 때때로 나의 친구가 고용량 혹은 고처리 영상작업을 해야 하는 경우 ftp를 통해 소스 파일을 옮겨와 작업을 하는 경우가 허다하다.

하지만 이런 경우 콘솔의 사용자와 같은 화면을 공유하거나 콘솔의 사용자를 강제로 로그오프 시켜야만 접속이 되는 불상사가 생기게 된다.


 그래서 원격 세션을 사용하는 사람들은 엔터프라이즈 버전을 사용하거나 유니버셜 패치를 하는데 크롬은 동시에 두 사용자가 사용하면 다운되어 버린다.

구글에서 어서 수정해 주어야 할 문제이다..

,



저같은 경우 C언어를 공부중이라 C언어를 통해서 처리하려고 했습니다.


#include <stdio.h>

#include <stdlib.h>


우선 시스템에 직접 명령을 주려면 system()함수를  써야합니다.

이 함수를 위해 stdlib.h 라이브러리를 우선 인클루드합니다.

만약, PE모드에서 부팅했을 때 어떤 드라이브명인지 모를 경우를 고려한다면 io.h도 같이 인클루드 합니다.


파일의 존재 유무로 해당 파일이 있는 파티션을 찾아서 작업을 해야하는데 이 파일 유무를 체크해주는 함수가 access()함수입니다.

이 함수는 io.h에 들어있습니다.


access()함수에 대해서 여기서는 자세히 알 필요는 없습니다.

access()함수의 사용법은 다음과 같습니다.

access("const char* filename", int amode);

amode로는 여러가지가 있지만 우리는 여기서 0만을 사용합니다. 0은 해당 파일이 있는지 없는지 존재 유무를 체크하는 모드입니다.


저의 경우 파티션의 루트에 clean.vhd가 존재합니다.


int disk_chk;

disk_chk=access("C:\clean.vhd",0);

if(disk_chk==0)

system();


disk_chk=access("D:\clean.vhd",0);

if(disk_chk==0)

system();


disk_chk=access("E:\clean.vhd",0);

if(disk_chk==0)

system();


disk_chk=access("F:\clean.vhd",0);

if(disk_chk==0)

system();


파티션마다 다 찔러봐서 clean.vhd가 존재한다면 system()함수가 동작하게 합니다.

저의 경우 실력 미달로 저렇게 여러줄을 Ctrl + c, v 신공을..^^;


자기자신의 clean.vhd가 pe부팅시 어느 위치에 있는지 명확히 아신다면 위 과정은 생략합니다.(io.h또한 인클루드하지 않아도 됩니다)


이제 system()함수를 구성해야하는데 이것은 별다른 설명이 필요치 않습니다.

()사이에 "명령어"를 넣어주는 것으로 일은 끝납니다.


system("copy E:\clean.vhd E:\child1.vhd");


물론 각 if문에 맞춰서 드라이브문자열은 변경하시기 바랍니다. 파일 경로또한 본인에 맞게 쓰시면 됩니다.




#include <stdio.h>

#include <stdlib.h>


main()

{

int /*drive_check,*/menu;

//char path[] = "C:\clean.vhd";

//char drive = 'C';


printf("Optimized VHD Recovery Program on NAZUNA's Workstation\n\n");

printf("1 : HDD Recovery\n2 : HDD Parent Recovery\n3 : SSD Recovery\n0 : Skip\n");

printf("=>");

scanf("%d",&menu);


/* VHD 파일의 위치를 정확히 알 수 없을 때

for (; drive < 'Z'; ++drive) 

{

path[0] = drive;

drive_check = access(path, 0);

if (drive_check == 0)

break;

}

*/

switch(menu)

{


case 1:


printf("Child VHD CleanUp Start!\n");

system("copy E:\clean.vhd E:\child1.vhd");

printf("child1.vhd Clear\n");

system("copy E:\clean.vhd E:\child2.vhd");

printf("child2.vhd Clear\n");

system("bcdedit /default {232e6f06-175a-11e2-aa26-00190e10ed83}");

printf("Set default child1.vhd\n");

printf("\n Complete! \n");

system("pause");

break;


case 2:

printf("Parent VHD CleanUp Start!\n");

printf("HDD의 VHD 백업 파일의 용량에 따라 십수분 이상 걸릴 수 있습니다.\n");

system("copy E:\bkp\Windows7_Enterprise_K_MSDN.vhd E:\Windows7_Enterprise_K_MSDN.vhd");

printf("Add Parent VHD in bootloader...\n");

system("diskpart /s diskpart_script.txt");

system("bcdboot z:\windows /l ko-kr");

system("bcdedit /default {232e6f0f-175a-11e2-aa26-00190e10ed83}");

printf("\n Complete! \n");

system("pause");

break;


case 3:

printf("SSD OS CleanUp Start!\n");

printf("SSD의 VHD 백업 파일의 용량에 따라 십수분 이상 걸릴 수 있습니다.\n");

system("copy E:\Windows7_Enterprise_K_MSDN.vhd D:\Windows7_Enterprise_K_MSDN.vhd");

printf("\n Complete! \n");

system("pause");

break;


case 0:

break;


default:

system("cls");

printf("잘못된 선택입니다.\n");

main();

break;

}

}



주석이 달린 부분은 아직 미완성인 부분입니다.

컴파일러가 없어도 배포하는 프로그램만으로 스스로 파일을 찾아서 적용케 하려고 했지만 저도 아직은 배우는 입장이다보니 힘드네요 ㅠㅠ


추가.

파일을 찾아 적용하는 구문이 초기에 내가 문자열을 다루는 함수를 거의 몰라서 처리를 하지 못했는데 string.h 에 있는 strcat 함수를 응용하면 

system함수에 본인이 찾은 경로를 바로 입력이 가능하다.

그것을 구현하지 못해서 취소선을 그려두었는데 찾았으니 재 작업할 예정

,
1
프로필 이미지
It's the Only NEET Thing to do. written by 나즈나
분류 전체보기 (256)
포트폴리오 (2)
여러가지 (160)
Windows (26)
Linux (1)
Server (5)
컴퓨터 (48)
전자기기 (3)
자격증 (3)
모바일 (1)
공유기 (4)
초소형컴퓨터 (3)