비쥬얼 스튜디오 2005에서 컴파일 하다 보면 위의 warning이 뜨는것을 볼 수 있다.

몇가지 경우가 있는듯 한데

대표적으로 예전의 문자열 관련 CRT 함수를 쓰면 나타난다.

위 warning의 의미는 "VS2005에서 이전 문자열 관련 CRT함수의 안전성을 강화하기 위하여

"_s"가 붙는 함수를 다시 만들었기 때문에 될 수 있으면 이전에 사용하던 함수는 사용하지 마라" 정도가 되겠다.


예) strcpy  -> strcpy_s


안전성이라고 해봐야 특별한것은 없고 메모리 관련 에러가 나면 확실하게 에러를 표시해 주는 기능 정도인거 같다 (이전 함수들은 메모리 버퍼의 크기에 대한 보장을 못함). 그래도 메모리 관련 에러가 나면 그 결과가 엉뚱한 데서 나타날 수가 있으므로 여간 찾기 어려운 것이 아닌데 이런 사소한것 부터 조심스럽게 쓰면 좀 더 안전하게 코딩할 수 있지 않을까 생각이 든다.

그래서 요즘 드는 생각들이 C 함수 보다는 C++이 제공해주는 (엄밀하게 말한다면

C++ 로 만든 표준 라이브러리)클래스를 보다 폭넓게 사용하는것이 좋겠다라는 생각이 든다.

STL에서 제공해주는 스트링 클래스나 여러 컨테이너를 사용한다면 직접 문자열을 다룬다거나

new delete를 사용하는 빈도가 줄어들터이니...


java가 부러운점이 있다면

필요로하는 거의모든 라이브러리를 표준차원에서 제공해준다는것이다.

C++ 같은경우 간단한 문법(사실 문법자체도 어렵거니와)과 STL을 뺀다면

표준이랄께 없기 때문이다.

투정이 좀 길었는데

처음으로 돌아가서

만약 이전에 짜놓았던 코드를 고치기 힘들면 복잡하게 생각할꺼 없고

stdafx.h 파일의 최 상단에

#define _CRT_SECURE_NO_DEPRECATE

한줄 넣어버리면 그만이다...

블로그 이미지

요다할아범

,

 : 자주사용하는 함수


 : 일반적으로 많이 아는 함수


 : 특수한 경우에만 사용하는 함수

 ◈ 함수명 : Abs

 ◈ 함수명 : Array

 형식 : Abs(number)

 형식 : Array(arglist)

 설명 : 가로안의 수치에 대한 절대값을 구합니다.

 설명 : 배열이 포함된 값을 반환합니다.

 예제 : Abs(21.7) ☞ 21.7을 반환합니다.
          Abs(-21.7) ☞ 21.7을 반환합니다.

 예제 : m=Array("월","화","수","목","금","토","일")
          d=m(2) ☞ d에는 "화"가 들어갑니다.

 ◈ 함수명 : Asc

 ◈ 함수명 : Atn

 형식 : Asc(string)

 형식 : Atn(number)

 설명 : 문자열의 첫 글자에 해당하는 문자 코드를 나타내는           integer 값을 반환합니다.

 설명 : 가로안의 수치의 아크탄젠트(arctangent)값을           지정하는 Double을 반환합니다.

 예제 : Asc("A") ☞ 65를 반환합니다.
          Asc("a") ☞ 97를 반환합니다.

 예제 : pi=4*Atn(1) ☞ 원주율의 값을 계산합니다.
          Atn은 삼각함수 Tan의 역함수입니다.

 ◈ 함수명 : Choose

 ◈ 함수명 : Chr

 형식 : Choose(index,선택1,선택2....)

 형식 : Chr(charcode)

 설명 : 인수목록에서 값을 선택하고 그 값을 반환합니다.

 설명 : ASCII코드값에 해당되는 문자를 반환합니다.

 예제 : Gsun=Choose(ind,"빠름","중간","느림")
          ☞ ind값에 따라 선택목록에서 값을 반환합니다.

 예제 : Chr(65) ☞ A를 반환합니다.
          Chr(97) ☞ a를 반환합니다.

 ◈ 함수명 : Command

 ◈ 함수명 : Cos

 형식 : Command

 형식 : Cos(number)

 설명 : 비주얼베이직으로 개발된 실행 프로그램을 시작했던           명령줄의 인수부분을 반환합니다.

 설명 : 특정한 각의 코사인 값을 반환합니다.

 예제 : VB /cmd cmdinsu ☞ cmdinsu는 Command함수에           의해 반환된 인수를 나타냅니다.

 예제 : Cos(30) ☞ Cos 30도 값을 반환합니다.

 ◈ 함수명 : CreateObject

 ◈ 함수명 : CurDir

 형식 : CreateObject(class)

 형식 : CurDir(drive)

 설명 : ActiveX 개체에 대한 참조를 만들거나 반환합니다.

 설명 : 현재 경로를 나타내는 문자열을 반환합니다.

 예제 : CreateObject("Excel.Application)
          ☞ Excel.Application개체에 대한 참조를 만들어               전달합니다.

 예제 : CurDir ("C") ☞ 현재 경로가 "C:\vbasic\연습"이라면           이 경로값을 반환합니다.

 ◈ 함수명 : CVErr

 ◈ 함수명 : Date

 형식 : CVErr(errornumber)

 형식 : Date

 설명 : 사용자가 지정한 오류번호를 반환합니다.

 설명 : 현재의 시스템 날짜를 반환합니다.

 예제 : CVErr(1357) ☞ 사용자정의 오류 번호를 반환합니다.

 예제 : d=Date ☞ d에 현재 시스템 날짜를 반환합니다.

 ◈ 함수명 : DateValue

 ◈ 함수명 : Day

 형식 : DateValue(date)

 형식 : Day(date)

 설명 : 날짜값을 반환합니다.

 설명 : 해당월의 날짜를 의미하는 정수값을 반환합니다.

 예제 : DateValue("October 15, 1985)
         ☞ 영문표기법에 의한 날짜값을 반환합니다.

 예제 : mdate=#October 15, 1990#
          m=Day(mdate) ☞ m은 15를 받습니다.

 ◈ 함수명 : EOF

 ◈ 함수명 : Error

 형식 : EOF(filenumber)

 형식 : Error(errornumber)

 설명 : Input용으로 열린 파일의 끝에 도달하면 Boolean
          값을 True값을 반환합니다.

 설명 : 주어진 오류번호에 해당하는 오류메세지를 반환합니다

 예제 : Do While Not EOF(1) ☞ 파일의 끝을 확인합니다.

 예제 : Error(1231) ☞ errornumber해당하는 오류메세지를
          반환합니다.

 ◈ 함수명 : Exp

 ◈ 함수명 : FileAttr

 형식 : Exp(number)

 형식 : FileAttr(filenumber, returntype)

 설명 : e(자연로그의 밑)의 거듭제곱수를 반환합니다.

 설명 : Open문으로 연 파일의 파일모드를 반환합니다.

 예제 : Exp(-1 * 1.3)/2 ☞ 쌍곡선 사인값을 반환합니다.

 예제 : FileAttr(FileNum, 1) ☞ Append 파일모드입니다.

 ◈ 함수명 : Int, Fix

 ◈ 함수명 : Format

 형식 : Int(number), Fix(number)

 형식 : Format(expression, format...)

 설명 : 특정 숫자의 정수 부분을 전달된 형식으로 반환합니다

 설명 : 형식 식의 명령대로 구성된 문자를 반환합니다.

 예제 : Int(99.8) ☞ 99   Int(-99.2) ☞ -100
          Fix(99.8) ☞ 99   Fix(-99.2) ☞ -99 를 반환합니다.

 예제 : Format(53000,"##,###") ☞ 53,000
          Format(2, "0.00%") ☞ 200.00%을 반환합니다.

 ◈ 함수명 : GetSetting

 ◈ 함수명 : Hex

 형식 : GetSetting(appname, section, key[,default])

 형식 : Hex(number)

 설명 : 윈도우 레지스트리에서 키 설정값을 반환합니다.

 설명 : 숫자의 16진수값을 문자값으로 반환합니다.

 예제 : GetSetting(appname:="MyApp", section:="Startup",           key:="Left", defaulf:="25")  ☞ 레지스트리의 키 설정
          값을 반환합니다.

 예제 : mHex=Hex(7) ☞ 7를 반환합니다.
          mHex=Hex(10) ☞ A를 반환합니다.
          mHex=Hex(27) ☞ 1B를 반환합니다.

 ◈ 함수명 : Hour

 ◈ 함수명 : IIf

 형식 : Hour(time)

 형식 : IIf(expr, truepart, falsepart)

 설명 : 시간을 나타내는 0에서 23사이의 정수값을 반환합니다

 설명 : 식을 평가한 결과에 따라 값을 반환합니다.

 예제 : MTime=#3:20:45 PM#.
          MHour=Hour(MTime) ☞ 15값이 반환됩니다.

 예제 : IIf(su>200, dan*su*0.8, dan*su)
          ☞ 주어진 식을 평가하여 참, 거짓문장을 수행합니다.

 ◈ 함수명 : IMEStatus

 ◈ 함수명 : Input

 형식 : IMEStatus

 형식 : Input(number,[#]filenumber)

 설명 : IME모드를 나타내는 값을 반환합니다.

 설명 : Input 또는 Binary 모드로 연 파일로부터 문자가          들어있는 문자를 반환합니다.

 예제 : vbIMEModeNoControl ☞ 0(현재 상태 유지)
          vbIMEModeHangul ☞ 10(한글)

 예제 : Open "TFile" For Input As #1 ☞ 파일을 엽니다.
          MChar=Input(1,#1) ☞ 한 문자를 가져옵니다.

 ◈ 함수명 : InputBox

 ◈ 함수명 : InStr

 형식 : InputBox(prompt[,title,default,xpos, ypos,helpfile])

 형식 : InStr([,start,]string1,string2[,compare])

 설명 : 대화 상자안의 프롬프트를 보여주며, 사용자가 입력을
         하면 입력된 내용을 포함하는 문자열을 반환합니다.

 설명 : 한 문자열안에 특정 문자열이 처음으로 발생한 위치를
          수치값으로 반환합니다.

 예제 : InputBox(msg,"입력연습", "없음")
          ☞ 메시지와 Input박스의 제목과 기본값을 설정합니다.

 예제 : InStr(3,"honggildong","d",1)
          ☞ 3 위치에서 비교시작하여 d가 발견된 8을 반환

 ◈ 함수명 : IsArray

 ◈ 함수명 : IsDate

 형식 : IsArray(varname)

 형식 : IsDate(expression)

 설명 : 변수가 배열인지 나타내는 Boolean값을 반환합니다.

 설명 : 식을 날짜로 변환할 수 있는지를 Boolean값으로 반환

 예제 : Dim k(2,3)
          if IsArray(k) ☞ True값을 반환합니다.

 예제 : MDate="#2/18/78#"
          if IsDate(MDate) ☞ True값을 반환합니다.

 ◈ 함수명 : IsEmpty

 ◈ 함수명 : IsError

 형식 : IsEmpty(expression)

 형식 : IsError(expression)

 설명 : 변수가 초기화 되었는지를 Boolean값으로 반환합니다

 설명 : 식이 오류 값인지를 나타내는 Boolean값을 반환

 예  제 : Dim Mchk
            if IsEmpty(Mchk) ☞ True값을 반환합니다.

 예제 : if IsError(Rel)☞ Rel이 오류면 True값을 반환합니다.

 ◈ 함수명 : IsMissing

 ◈ 함수명 : IsNull

 형식 : IsMissing(argname)

 형식 : IsNull(expression)

 설명 : 선택적인 Variant인수가 프로시저에 전달되었는지
          나타내는 Boolean값을 반환합니다.

 설명 : 식이 Null값인지를 Boolean값으로 반환합니다.

 예제 : Function ReT(Optional A)
          If IsMissing(A) ☞ 인수값이 있으면 참값을 반환합니다

 예제 : Myvar=Null
          if IsNull(MyVar) ☞ True값을 반환합니다.

 ◈ 함수명 : IsNumeric

 ◈ 함수명 : IsObject

 형식 : IsNumeric(expression)

 형식 : IsObject(idenfifier)

 설명 : 식을 수로 평가할 수 있는지를 Boolean값으로 반환

 설명 : 식별자가 개체변수인지를 Boolean값으로 반환합니다.

 예제 : su=30
          if IsNumeric(su) ☞ True값을 반환합니다.

 예제 : Dim Mobj As Object
          Set Yobj=Mobj ☞ 개체참조를 지정합니다.
          if IsObject(Yobj) ☞ Treu를 반환합니다.

 ◈ 함수명 : LBound

 ◈ 함수명 : LCase

 형식 : LBound(arrayname[, dimension])

 형식 : LCase(string)

 설명 : 지정된 배열 차원에 사용할 수 있는 가장 작은 첨자를
          포함하는 Long형 값을 반환합니다.

 설명 : 소문자로 변환된 문자값을 반환합니다.

 예제 : Dim Marray(1 To 10, 10 To 20) ☞ 배열변수 선언
          L=LBound(Marray,1) ☞ 1을 반환합니다.

 예제 : k="SEOUL"
          m=LCase(k) ☞ "seoul"를 반환합니다.

 ◈ 함수명 : Left

 ◈ 함수명 : Len

 형식 : Left(string, length)

 형식 : Len(string | varname

 설명 : 문자열의 좌즉에서부터 지정된 수만큼 문자를 반환

 설명 : 문자열의 갯수를 수치로 반환합니다.

 예제 : s="hello chulsu"
          m=Left(s, 3) ☞ "hel"을 반환합니다.

 예제 : Len("chanbin") ☞ 7을 반환합니다.

 ◈ 함수명 : LoadPicture

 ◈ 함수명 : Loc

 형식 : LoadPicture(stringexpression)

 형식 : Loc(filenumber)

 설명 : 폼의 PictureBox컨트롤, Image컨트롤에 그림을 호출

 설명 : 열려있는 파일에서 현재의 R/W위치를 반환합니다.

 예제 : Picture1.Picture=LoadPicture("chan.jpg")
         ☞ 픽쳐박스에 그림을 불러옵니다.

 예제 : MyLocation=Loc(1) ☞ 파일안의 현재위치를 반환

 ◈ 함수명 : LOF

 ◈ 함수명 : Log

 형식 : LOF(filenumber)

 형식 : Log(number)

 설명 : Open문으로 연 파일의 크기를 반환합니다.

 설명 : 특정한 수의 자연로그값을 계산합니다.

 예제 : Flen=LOF91) ☞ 파일의 길이를 구합니다.

 예제 : Log(x) ☞ x값에 대한 자연로그값을 구합니다.

 ◈ 함수명 : LTrim, RTrim, Trim

 ◈ 함수명 : Mid

 형식 : LTrim(string), RTrim(string), Trim(string)

 형식 : Mid(string, start[,length])

 설명 : 지정된 문자열의 좌측, 우측, 양쪽에 공백이 없는 문자
          열을 반환합니다.

 설명 : 한 문자열에서 시작위치에서 지정한 수 만큼이 문자들
          을 반환합니다.

 예제 : k=" seoul "
          m=LTrim(k) ☞ "seoul "을 반환합니다.

 예제 : k="hello chanbin"
          m=Mid(k,7,4) ☞ "chan"을 반환합니다.

 ◈ 함수명 : Minute

 ◈ 함수명 : MIRR

 형식 : Minute(time)

 형식 : MIRR(values(), finance_rate, reinvest_rate)

 설명 : 분을 나타내는 0에서 59사이의 정수값을 반환합니다.

 설명 : 일정기간의 자금흐름에 대한 수정된 내부이익을 지정
          하는 값을 반환합니다.

 예제 : MyTime=#5:38:23# ☞ 시간을 지정합니다.
          m=Minute(MyTime) ☞ 38을 반환합니다.

 예제 : values()(자금흐름값을 지정), finance_rate(재정처리
         비용으로 지불할 이율을 지정), reinvest_rate(자금 재
         투자로 인한 수익에서 받을 이율을 지정)

 ◈ 함수명 : Month

 ◈ 함수명 : MsgBox

 형식 : Month(date)

 형식 : MsgBox(prompt[,buttons, title, helpfile, context])

 설명 : 월을 나타내는 1에서 12사이의 정수값을 반환합니다.

 설명 : 대화 상자안에 메시지를 보여줍니다.

 예제 : Mydate=#October 15, 1990# ☞ 날짜를 지정합니다.
          m=Month(Mydate) ☞ 10을 반환합니다.

 예제 : MsgBox "안녕하세요" ☞ 해당메세지를 보여줍니다.

 ◈ 함수명 : Now

 ◈ 함수명 : NPer

 형식 : Now

 형식 : NPer(rate, pmt, pb[,fv, type])

 설명 : 사용자 컴퓨터 시스템 날짜와 시간을 반환합니다.

 설명 : 정기고정 지불액과 고정이율을 기준으로 연금의 기간
          수를 반환합니다.

 예제 : Td=Now ☞ 현재 날짜와 시간을 반환합니다.

 예제 : rate(일정기간 이율을 지정), pmt(각 기간에 지불할
          지불액), pv(장래의 지불액), fv(마지막으로 지불한후
          에 원하는 장래의 값), type(지불만기일)

 ◈ 함수명 : NPV

 ◈ 함수명 : Oct

 형식 : NPV(rate, values())

 형식 : Oct(number)

 설명 : 정기적인 자금 흐름과 할인율을 기준으로 현재의 순
          투자 가치를 반환합니다.

 설명 : 숫자의 8진수값을 문자로 반환합니다.

 예제 : rate(전 기간에 걸친 할인율을 지정), values()(자금 흐
          름값을 지정)

 예제 : m=Oct(5) ☞ 5를 반환합니다.
          d=Oct(9) ☞ 11을 반환합니다.

 ◈ 함수명 : QBColor

 ◈ 함수명 : Rate

 형식 : QBColor(color)

 형식 : Rate(nper, pmt, pv, fv[, type, guess])

 설명 : 지정된 색 번호에 대응하는 칼라를 나타냅니다.

 설명 : 연금에 대한 일정기간 당 이율을 반환합니다.

 예제 : QBColor(0) ☞ 검정색을 반환합니다. 1(파랑), 2(초록)
          3(청록), 4(빨강), 5(진홍), 6(노랑), 7(흰색), 8(회색),
          9(연파랑), 10(연초록), 11(연청록), 12(연빨강),
          13(연진홍), 14(연노랑), 15(옅은 흰색)  

 예제 : nper(연금의 총지불 기간수를 지정), pmt(각 기간에
          지불할 지불액을 지정), pv(장래의 지불액이나 수령액
          에 대한 현재의 값을 지정), fv(마지막으로 지불한 후에
          원하는 장래의 값), type(지불만기일), guess(추정치를
          지정하는 Variant는 Rate로 얻음)

 ◈ 함수명 : RGB

 ◈ 함수명 : Right

 형식 : RGB(red, green, blue)

 형식 : Right(string, length)

 설명 : RGB색값을 Long형식의 정수로 반환합니다.

 설명 : 문자열의 우측에서 지정한 수만큼의 문자열을 반환

 예제 : RGB(255, 0, 0) ☞ 빨강색을 반환합니다.
          RGB(0, 0 ,255)) ☞파랑색을 반환합니다.

 예제 : k="hello chanbin"
          m=Right(k, 3) ☞ "bin"을 반환합니다.

 ◈ 함수명 : Rnd

 ◈ 함수명 : Second

 형식 : Rnd(number)

 형식 : Second(time)

 설명 : 난수를 반환합니다.(0에서 1사이의 수치)

 설명 : 초를 나타내는 0에서 59사이의 수를 반환합니다.

 예제 : m=int((Rnd*6))+1 ☞ 1에서 6사이의 난수를 발생합니다

 예제 : MyTime=#2:40:55 PM# ☞ 시간을 지정합니다.
          s=Second(MyTime) ☞ 55를 반환합니다.

 ◈ 함수명 : Seek

 ◈ 함수명 : Sgn

 형식 : Seek(filenumber)

 형식 : Sgn(number)

 설명 : Open문으로 열린 파일안의 R/W의 위치를 반환합니다

 설명 : 특정 숫자의 부호를 수치로 반환합니다.

 예제 : Mc=Input(1, #1) ☞ 데이터의 문자를 읽어드립니다.
          Debug.Print Seek(1) ☞ 디버그창의 바이트 위치를
          출력합니다.

 예제 : m=Sgn(50) ☞ 양수이면 1을 0이면 0을 음수이면 -1을
          반환합니다. 따라서 여기서는 1을 반환합니다.

 ◈ 함수명 : Shell

 ◈ 함수명 : Sin

 형식 : Shell(pathname[, windowstyle])

 형식 : Sin(number)

 설명 : 사용자에 의해 지정된 응용프로그램을 실행합니다.

 설명 : 각도의 사인값을 반환합니다.

 예제 : k=Shell("C:\windows\calc.exe", 1)
         ☞ 계산기를 실행합니다.

 예제 : Sin(30*pi/180) ☞ 사인 30도값을 구합니다.

 ◈ 함수명 : SLN

 ◈ 함수명 : Space

 형식 : SLN(cost, salvage, life)

 형식 : Space(number)

 설명 : 단일 기간 동안의 정액법을 지정하는 값을 반환합니다.

 설명 : 지정된 수의 공백을 반환합니다.

 예제 : cost(초기자산 비용을 지정), Salvage(유용기간이 끝
          나는 시점의 자산액수를 지정), Life(자산의 유용기간
          길이를 지정)

 예제 : m="hello" & Space(10) & "chanbin"
          ☞ 두 문자열 사이에 10 공백을 삽입합니다.

 ◈ 함수명 : Spc

 ◈ 함수명 : Str

 형식 : Spc(n)

 형식 : Str(number)

 설명 : Print메서드에서 출력위치를 지정합니다.

 설명 : 숫자형식의 데이터를 문자열 데이터로 변환합니다.

 예제 : Print spc(5) "chanbin" ☞ 5칸을 띤 후에 출력합니다.

 예제 : Str(390) ☞ "390"를 반환합니다.

 ◈ 함수명 : StrComp

 ◈ 함수명 : StrConv

 형식 : StrComp(string1.string2[, compare])

 형식 : StrConv(string, conversion)

 설명 : 문자열 비교의 결과값을 수치로 반환합니다.

 설명 : 지정된 대로 변환된 문자열을 반환합니다.

 예제 : a="chanbin" b="chanbin"
          StrComp(a, b, 1) ☞ 0을 반환합니다.

 예제 : vbUpperCase(문자열을 대문자로), vbLowerCase(문
          열을 소문자로), vbWide(1바이트문자를 2바이트로)

 ◈ 함수명 : String

 ◈ 함수명 : Switch

 형식 : String(number, character)

 형식 : Switch(expr-1, value-1[,expr-2, value-2....])

 설명 : 지정된 길이의 반복되는 문자열을 반환합니다.

 설명 : 식의 목록식을 평가한 후 목록에서 True값을 갖는 최
          최의 식과 관련된 값이나 식을 반환합니다.

 예제 : String(7, "*") ☞ "*******"을 반환합니다.
          String(10, 65) ☞ "AAAAAAAAAA"을 반환합니다.

 예제 : Switch(CityName="London", "Englich", CityName=
          "Roma", "Italian") ☞ 도시의 이름과 일치하는 언어이
           름을 반환합니다.

 ◈ 함수명 : SYD

 ◈ 함수명 : Tab

 형식 : SYD(cost, salvage, life, period)

 형식 : Tab(n)

 설명 : 지정된 기간동안 자산의 감가상각값을 반환합니다.

 설명 : Print메서드에서 출력위치를 정합니다.

 예제 : cost(초기 자산비용을 지정), salvage(유용기간이 끝
          나는 시점의 자산액수를 지정), life(자산의 유용기간
          길이), period(자산의 감가상각을 계산하는 기간지정)

 예제 : Print Tab(10) "chanbin"
          ☞ 10번째 칸에서부터 "chanbin"을 출력

 ◈ 함수명 : Tan

 ◈ 함수명 : Time

 형식 : Tan(number)

 형식 : Time

 설명 : 각도의 탄젠트값을 반환합니다.

 설명 : 현재의 시스템 시간을 반환합니다.

 예제 : Tan(30*pi/180) ☞ 탄젠트 30값을 구합니다.

 예제 : MyTime=Time ☞ 현재 시스템 시간을 반환합니다.

 ◈ 함수명 : Timer

 ◈ 함수명 : TimeSerial

 형식 : Timer

 형식 : TimeSerial(hour, minute, second)

 설명 : 자정 이후 경과한 초 수를 반환합니다.

 설명 : 특정 시, 분, 초에 대한 시간을 반환합니다.

 예제 : Finish=Timer ☞ 종료시간을 지정합니다.

 예제 : TimeSerial(15, 30,27) ☞ 오후 3시 30분 27을 표현

 ◈ 함수명 : TimeValue

 ◈ 함수명 : TypeName

 형식 : TimeValue(time)

 형식 : TypeName(varname)

 설명 : 시간 값을 포함한 Date값을 반환합니다.

 설명 : 변수에 대한 정보를 제공하는 문자형값을 반환합니다.

 예제 : TimeValue("3:20:32 PM") ☞ 시간을 반환합니다.

 예제 : TypeName(IntVar) ☞ "integer"를 반환합니다.

 ◈ 함수명 : Ubound

 ◈ 함수명 : UCase

 형식 : Ubound(arrayname[, dimension])

 형식 : UCase

 설명 : 배열차원을 나타내는 첨자를 반환합니다

 설명 : 지정한 문자열을 대문자로 변환합니다.

 예제 : Dim Myarray(1 To 10)
          Ubound(Myarray) ☞ 10을 반환합니다.

 예제 : k="chanbin"
          UCase(k) ☞ "CHANBIN"을 반환합니다.

 ◈ 함수명 : Val

 ◈ 함수명 : VarType

 형식 : Val(string)

 형식 : VarType(varname)

 설명 : 문자열내에 포함된 수치를 숫자값으로 변환합니다.

 설명 : 변수의 하위 형식을 나타내는 값을 수치로 반환합니다.

 예제 : Val("3500") ☞ 3500을 반환합니다.

 예제 : IntVar=235
          VarType(IntVar) ☞ 정수를 나타내는 2를 반환합니다.

 ◈ 함수명 : Weekday

 ◈ 함수명 : Year

 형식 : Weekday(date, [firstdayofweek])

 형식 : Year(date)

 설명 : 평일을 나타내는 정수값을 반환합니다.

 설명 : 연도를 나타내는 정수값을 반환합니다.

 예제 : MyDate=#October 26, 2000#
          k=Weekday(Mydate) ☞ Mydate가 목요일을 나타내기
          때문에 5가 k에 반환됩니다.

 예제 : Mydate=#October 26, 2000# ☞ 날짜를 지정합니다.
          k=Year(Mydate) ☞ 2000을 나타냅니다.


블로그 이미지

요다할아범

,

인클루드

#include <atlconv.h>


CString bstrToCString(BSTR bstr)

{
   char* pbstr;
   USES_CONVERSION;  //convert
를 위한 매크로
   pbstr=OLE2A(bstr);   //bstr
char convert
   return CString(pbstr);
}


BSTR CString Tobstr(CString str)

{
    return str.AllocSysString();    //CString
bstr convert
}


[bstr-> char*]

BSTR inputdata;
char *pbstr;
pbstr=OLE2A(inputdata);


[char*->bstr]

TCHAR szTitle[ 512 ];
_bstr_t bstrText = szTitle;
*bstrTitle = bstrText.copy();


//CString ==> CComVariant로 변환
 CComVariant out(str.AllocSysString());  or  CComVariant out(str);

 

----------- VARIANT 구조체 사용예 ----------

VARIANT vVal;

VariantInit(&vVal); //초기화

vVal.vt = VT_BOOL;

vVal.boolVal = TRUE;

 

---------- BSTR 사용예 --------------

1) BSTR m_pStr;

m_pStr = L"Hello CodeIn"; // 문자의 개수가 지정되지 않음

 

2) wchar_t Example[] = L"String";

BSTR m_pStr = SysAllocString(Example); // BSTR 문자열 영역확보

//..

SysFreeString(m_pStr); // BSTR 문자열 영역 해제

 

---------------- CComVariant, CComBSTR ---------------

VARIANT  => CComVariant;

BSTR => CComBSTR


블로그 이미지

요다할아범

,
기술 자료 ID : 310516
마지막 검토 : 2007년 12월 3일 월요일
수정 : 4.1
이 문서는 이전에 다음 ID로 출판되었음: KR310516

요약

경고: 레지스트리 편집기를 잘못 사용하면 심각한 문제가 발생할 수 있으며 문제를 해결하기 위해 운영 체제를 다시 설치해야 할 수도 있습니다. Microsoft는 레지스트리 편집기를 잘못 사용함으로써 발생하는 문제에 대해 해결을 보증하지 않습니다. 레지스트리 편집기 사용에 따른 모든 책임은 사용자에게 있습니다.
이 문서에서는 등록 항목(.reg) 파일을 사용하여 레지스트리 하위 키와 값을 추가, 변경 또는 삭제하는 방법을 단계별로 설명합니다. Regedit.exe는 .reg 파일을 사용하여 레지스트리 하위 키와 값을 가져오거나 내보냅니다. .reg 파일을 사용하면 레지스트리 변경 내용을 원격에서 다수의 Windows 기반 컴퓨터에 배포할 수 있습니다. .reg 파일을 실행하면 해당 파일 내용이 로컬 레지스트리로 병합됩니다. 따라서 .reg 파일을 배포할 때는 주의해야 합니다.

위로 가기

.reg 파일의 구문

.reg 파일의 구문은 다음과 같습니다.

RegistryEditorVersion
Blank line
[RegistryPath1]
"DataItemName1"="DataType1:DataValue1"
DataItemName2"="DataType2:DataValue2"
Blank line
[RegistryPath2]
"DataItemName3"="DataType3:DataValue3"

여기에서

RegistryEditorVersion은 Windows 2000, Windows XP 및 Windows Server 2003용 "Windows 레지스트리 편집기 버전 5.00"이거나 Windows 98 및 Windows NT 4.0용 "REGEDIT4"입니다. "REGEDIT4" 헤더는 Windows 2000, Windows XP 및 Windows Server 2003 기반의 컴퓨터에서도 작동합니다.

Blank line은 빈 줄을 의미하며 새 레지스트리 경로의 시작 부분을 나타냅니다. 각 키 또는 하위 키는 새로운 레지스트리 경로입니다. .reg 파일에 키가 여러 개 있다면 blank line을 통해 내용을 검사하여 문제를 해결할 수 있습니다.

RegistryPathx는 가져오려는 첫 번째 값을 보유하고 있는 하위 키의 경로입니다. 경로는 대괄호로 묶어야 하며 각 계층은 백슬래시로 구분해야 합니다. 예를 들면 다음과 같습니다.
[HKEY_LOCAL_ MACHINE\SOFTWARE\Policies\Microsoft\Windows\System]
.reg 파일에는 여러 레지스트리 경로가 포함될 수 있습니다. 레지스트리에 경로 문장의 최하위 계층이 없으면 새로운 하위 키가 만들어집니다. 레지스트리 파일의 내용은 사용자가 입력하는 순서대로 레지스트리로 보내집니다. 따라서 다른 하위 키가 아래에 있는 새 하위 키를 생성하는 경우 줄을 정확한 순서대로 입력해야 합니다.

DataItemNamex는 가져올 데이터 항목의 이름입니다. 파일의 데이터 항목이 레지스트리에 없으면 .reg 파일에서 데이터 항목과 해당 항목 값을 추가합니다. 데이터 항목이 존재하면 .reg 파일의 값이 기존 값을 덮어씁니다. 데이터 항목의 이름은 인용 부호로 표시됩니다. 데이터 항목 이름 바로 다음에는 등호(=)가 옵니다.

DataTypex는 레지스트리 값의 데이터 형식이며 바로 다음에 등호가 붙습니다. REG_SZ(문자열 값)가 아닌 모든 데이터 형식 바로 다음에는 콜론이 붙습니다. 데이터 형식이 REG_SZ인 경우 데이터 형식 값이나 콜론을 집어넣지 않습니다. 이 경우 Regedit.exe는 데이터 형식을 REG_SZ로 간주합니다. 다음 표에서는 일반적인 레지스트리 데이터 형식을 보여 줍니다.
데이터 형식 .reg의 DataType
REG_BINARY 16진수
REG_DWORD dword
REG_EXPAND_SZ 16진수(2)
REG_MULTI_SZ 16진수(7)
레지스트리 데이터 형식에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
256986 (http://support.microsoft.com/kb/256986/) Microsoft Windows 레지스트리 설명
DataValuex는 콜론(REG_SZ의 경우 등호) 바로 다음에 오며 올바른 형식(예: 문자열 또는 16진수)을 사용해야 합니다. 이진 데이터 항목에는 16진수 형식을 사용합니다.

참고 동일한 레지스트리 경로에 여러 데이터 항목 줄을 입력할 수 있습니다.



위로 가기

레지스트리 하위 키 추가 또는 레지스트리 값 추가 및 변경

레지스트리 하위 키를 추가하거나 레지스트리 값을 추가 또는 변경하려면 레지스트리에서 적절하게 수정한 다음 적절한 하위 키를 내보내야 합니다. 내보낸 레지스트리 하위 키는 자동으로 .reg 파일로 저장됩니다. 레지스트리를 변경하고 변경 내용을 .reg 파일에 내보내려면 다음 단계를 수행하십시오.
1. 시작, 실행을 차례로 누르고 열기 상자에 regedit를 입력한 다음 확인을 누릅니다.
2. 변경하려는 레지스트리 항목을 보유하고 있는 하위 키를 찾아서 누릅니다.
3. 파일을 누른 다음 내보내기를 누릅니다.

이렇게 함으로써 하위 키를 변경 전에 백업할 수 있습니다. 변경한 후 문제가 발생하면 나중에 이 파일을 레지스트리로 다시 가져올 수 있습니다.
4. In the 파일 이름 상자에 원본 레지스트리 항목으로 .reg 파일을 저장할 파일 이름을 입력한 다음 저장을 누릅니다.

참고 하위 키 이름을 나타내는 것처럼 내용을 기억하는 데 도움이 되는 이름을 사용하십시오.
5. 오른쪽 창에서 원하는 레지스트리 항목을 추가 또는 수정합니다.
6. 하위 키를 다시 내보내려면 3-4단계를 반복하되 다른 .reg 파일 이름을 사용하십시오. 레지스트리 변경 내용을 다른 컴퓨터에 적용하기 위해 이 .reg 파일을 사용할 수 있습니다.
7. 로컬 시스템에서 변경 내용을 테스트합니다. 변경 내용으로 인해 문제가 발생하면 원래의 레지스트리 데이터에 대한 백업을 보유하는 파일을 두 번 눌러 레지스트리를 원래 상태로 되돌립니다. 변경 내용이 예상대로 작동한다면 본 문서의 "레지스트리 변경 내용 배포" 절에서 설명하는 방법을 통해 6단계에서 만든 .reg 파일을 다른 컴퓨터에 배포할 수 있습니다.

위로 가기

레지스트리 키 및 값 삭제

.reg 파일로 레지스트리 키를 삭제하려면 .reg 파일의 RegistryPath 앞에 하이픈(-)을 삽입합니다. 다음 레지스트리 키를 예로 들어 보겠습니다.
HKEY_LOCAL_MACHINE\Software
위의 레지스트리 키에서 Test 하위 키를 제거하려면 .reg 파일의 다음 레지스트리 키 앞에 하이픈을 삽입합니다.
HKEY_LOCAL_MACHINE\Software\Test
다음 예제의 .reg 파일을 가지고 이 작업을 수행할 수 있습니다.
[-HKEY_LOCAL_MACHINE\Software\Test]
.reg 파일을 가지고 레지스트리 값을 제거하려면 .reg 파일의 DataItemName 바로 다음에 오는 등호 기호 다음에 하이픈(-)을 삽입합니다. 예를 들어, 다음 레지스트리 키에서 TestValue 레지스트리 값을 제거하려면:
HKEY_LOCAL_MACHINE\Software\Test
.reg 파일의 "TestValue"= 다음에 하이픈을 삽입합니다. 다음 예제의 .reg 파일을 가지고 이 작업을 수행할 수 있습니다.
HKEY_LOCAL_MACHINE\Software\Test
"TestValue"=-
.reg 파일을 만들려면 Regedit.exe를 사용하여 삭제하고자 하는 레지스트리 키를 내보낸 다음 메모장을 가지고 .reg 파일을 편집하고 하이픈을 삽입합니다.

위로 가기

레지스트리 키 및 값 이름 변경

키 또는 값의 이름을 변경하려면 키 또는 값을 삭제한 다음 새로운 이름을 가진 새로운 키 또는 값을 만듭니다.

위로 가기

레지스트리 변경 내용 배포

전자 메일을 통해 .reg 파일을 사용자에게 보내거나 .reg 파일을 네트워크 상에서 공유한 후 사용자에게 알려 해당 파일을 실행하게 하거나 사용자의 로그온 스크립트에 명령을 추가하여 로그온 시 해당 .reg 파일을 자동으로 가져가게 할 수 있습니다. 해당 .reg 파일을 실행하는 사용자는 다음과 같은 메시지를 받게 됩니다.
레지스트리 편집기
레지스트리에 .reg 파일의 경로 에 있는 정보를 추가하시겠습까?
사용자가 를 클릭하면 다음과 같은 메시지를 받게 됩니다.
레지스트리 편집기
.reg 파일의 경로에 있는 정보가 레지스트리에 성공적으로 입력되었습니다.
Regedit.exe는 /s 명령줄 스위치를 제공하여 이러한 메시지가 표시되지 않도록 합니다. 예를 들어, /s 스위치를 사용하여 로그온 스크립트 배치 파일을 통해 조용히 .reg 파일을 실행시키려면 다음 구문을 사용합니다.
regedit.exe /s .reg 파일의 경로
그룹 정책 또는 시스템 정책을 사용하여 레지스트리 변경 내용을 네트워크를 통해 배포할 수도 있습니다. 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.
http://msdn.microsoft.com/library/en-us/dnw2kmag01/html/DistributingRegistryChanges.asp (http://msdn.microsoft.com/library/en-us/dnw2kmag01/html/DistributingRegistryChanges.asp)
참고 변경 내용이 작동하면 네트워크에 있는 다른 사용자에게 해당 등록 파일을 보낼 수도 있습니다.
블로그 이미지

요다할아범

,

비보호 모드로 동작하는 프로세스 실행 뜨는 보안 경고 처리하기

                                                                                         07 5 18정중희

 

 

Low Integrity로 열린 보호 모드의 익스플로러에서 외부 프로세스를 열려는 시도를 할 때 아래와 같은 경고 창이 뜨는 것을 볼 수 있다.

 

사용자 삽입 이미지

 

이는 MS가 명시하고 있는 윈도우의 Integrity Level 규칙에 어긋나는 동작임을 말해주는 경고 창이다. 보안을 위해 사용자에게 공지하고 사용여부를 묻는 방식이다.

이를 방지하기 위한 방법으로 경고 창 내 체크 박스를 이용하는 방법과, 익스플로러를 관리자 권한으로 실행하여 보호모드 오브젝트에 접근하는 방법, 그리고 레지스트리에 실행할 프로그램 명을 등록해 주는 방법 등이 있다.


 

첫째, 사용자가 직접 위 경고창 내의 이 프로그램에 대한 경고를 다시 표시 안함(S)” 에 체크를 하게 되면, 이 정책 정보가 레지스트리에 기록되어 다음 번 실행부터는 경고창을 띄우는 일이 없이 자동 허용하게 된다.

HKEY_CURRENT_USER 혹은 HKEY_LOCAL_MACHINE

SOFTWARE

Microsoft

Internet Explorer

Low Rights

ElevationPolicy

{00000000-0000-0000-0000-000000000000}

 AppName="사용할 프로세스.exe"
AppPath="
프로세스의 풀 경로"
  Policy=(DWORD) 00000003


Low Rights 권한 상승 정책 레지스트리 위치

 

이 방법은 사용자에게 자율적인 등록을 가능하게 하는 이점이 있으나, 최소한 1회 경고창을 접하게 된다는 문제가 있다. (물론 이는 MS에서 권고하는 바이나, 사용자는 불편함을 감수해야 한다.)

 

둘째, 관리자 권한으로 실행하는 방법에는 익스플로러의 아이콘에 마우스 커서를 위치 시키고 오른쪽 버튼을 누른 후 팝업 메뉴에서 관리자 권한으로 실행(Run As Administrator) 을 눌러 익스플로러를 실행 시키거나, 프로그램을 실행 하고자 하는 웹 사이트를 신뢰된 사이트로 등록시켜 주는 방법이 있다.

 

개발자적인 측면에서 보안 경고창을 막을 대안으로 위의 레지스트리 관련 작업들을 프로그램 배포시 자동으로 셋팅해 주는 방법을 생각해 볼 수 있다. 그러나 윈도우 Vista UAC(User Account Control)은 기본적으로 익스플로러를 Low Integrity Level로 실행 시키기 때문에 익스플로러 레지스트리에 접근 할 수 있는 권한 자체를 가지고 있지 않다. 대신 익스플로러는 현재 프로세스를 감지하여 설치 작업이라면 IEInstal.exe 라는 설치 대행 모니커를 불러들이고 모든 설치에 관련된 부분을 위임한다. IEInstal.exe High Integrity Level로 관리자의 권한을 가지고 시스템 폴더 및 레지스트리에 자유롭게 기록하거나 읽을 수 있는 프로세스이다.

 

사용자 삽입 이미지

IEInstal.exe 프로세스 속성

 

 

유추해 보면 프로그램 배포시 관리자 권한으로 레지스트리에 읽고 쓰기가 가능하므로 위의 방법을 프로그램 코드 내에 삽입하는 방법을 이용하면 가능한 해결책인 듯 보인다.

그러나 막상 적용하여 보면 다시 경고창이 뜨는 것을 확인 할 수 있을 것이다.

 

실제로 익스플로러는 일반 모드로 실행시 Low Integrity Level로 실행이 되며, 그와 동시에IEUser.exe라는 Midium Integrity Level 모니커 프로세스가 실행된다. IEUser.exe 는 익스플로러에 의해 캐시된 모든 인터넷 정보를 관리 / 유지 한다.

 

사용자 삽입 이미지


                                   IExplore.exe
IEUser.exe의 속성

 

그러므로 앞의 예와 같이 IEInstal.exe 모니커를 통해 레지스트리 수정이 가해지고 익스플로러를 재 시작 하게 되더라도, IEUser.exe는 캐시된 예전 정보를 가지고 있기 때문에, 강제적으로 IEUser.exe 의 프로세스를 재 시작 해야 할 필요가 있다.

 

위와 같은 레지스트리 기록 방식으로 Active-X opt-in 정책에 의해 발생되거나, 비보호 모드 프로세스의 실행 시 발생되는 경고창을 사전 차단할 수 있다.

 

Ps: Opt-in 정책에 의해 발생되는 경고창은 IEUser.exe 를 재시작 하지 않아도 가능했다.


사용자 삽입 이미지
 

Windows VISTA IE7.0 디렉토리 내부

블로그 이미지

요다할아범

,