[NSIS] 인증서 설치

# https://nsis.sourceforge.io/Import_Root_Certificate # 사용 예 # ${AddCertificateToStore} $0 "$VAR_INSTDIR\rootcert.cer" !define CERT_QUERY_OBJECT_FILE 1 !define CERT_QUERY_CONTENT_FLAG_ALL 16382 !define CERT_QUERY_FORMAT_FLAG_ALL 14 !define CERT_STORE_PROV_SYSTEM 10 !define CERT_STORE_OPEN_EXISTING_FLAG 0x4000 !define CERT_SYSTEM_STORE_LOCAL_MACHINE 0x20000 !define CERT_STORE_ADD_ALWAYS 4 !macro _AddCertificateToStore un Function ${un}_AddCertificateToStore Exch $0 Push $1 Push $R0 System::Call "crypt32::CryptQueryObject(i ${CERT_QUERY_OBJECT_FILE}, w r0, \ i ${CERT_QUERY_CONTENT_FLAG_ALL}, i ${CERT_QUERY_FORMAT_FLAG_ALL}, \ i 0, i 0, i 0, i 0, i 0, i 0, *i .r0) i .R0" ${If} $R0 0 System::Call "crypt32::CertOpenStore(i ${CERT_STORE_PROV_SYSTEM}, i 0, i 0, \ i ${CERT_STORE_OPEN_EXISTING_FLAG}|${CERT_SYSTEM_STORE_LOCAL_MACHINE}, \ w 'ROOT') i .r1" ${If} $1 0 System::Call "crypt32::CertAddCe...

[NSIS] 권한 상승

# https://nsis.sourceforge.io/UAC_plug-in !macro _UAC_Elevation un Function ${un}_UAC_Elevation Push $R0 Exch Pop $R0 uac_tryagain: !insertmacro UAC_RunElevated ${Switch} $0 ${Case} 0 ${IfThen} $1 = 1 ${|} Quit ${|} ;we are the outer process, the inner process has done its work, we are done ${IfThen} $3 0 ${|} ${Break} ${|} ;we are admin, let the show go on ${If} $1 = 3 ;RunAs completed successfully, but with a non-admin user MessageBox mb_YesNo|mb_IconExclamation|mb_TopMost|mb_SetForeground "This $R0 requires admin privileges, try again" /SD IDNO IDYES uac_tryagain IDNO 0 ${EndIf} ;fall-through and die ${Case} 1223 MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "This $R0 requires admin privileges, aborting!" Quit ${Case} 1062 MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "Logon service not running, aborting!" Quit ${Default} MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "Unable to...

[NSIS] 특수 경로 얻어오기

# 설치 경로에 '$'가 포함된 특수 경로이면 해당 경로를 찾아서 SetOutPath 설정, '$'가 포함되어 있지 않으면 들어온 경로 그대로 설정. # 호출 예 # ${GetSpecialPathReplaced} '반환' '특수 경로가 포함된 경로' # ${GetSpecialPathReplaced} $0 "$DESKTOP\test" # $0 == '$DESKTOP 부분이 로컬 PC의 환경에 맞춰 경로를 얻어오고 나머지 뒷 부분은 그대로.' !define CSIDL_DESKTOP '0x0' # Desktop path ($DESKTOP) !define CSIDL_PROGRAMS '0x2' # Programs path !define CSIDL_PERSONAL '0x5' # My document path !define CSIDL_FAVORITES '0x6' # Favorites path ($FAVORITES) !define CSIDL_STARTUP '0x7' # Startup path !define CSIDL_RECENT '0x8' # Recent documents path ($RECENT) !define CSIDL_SENDTO '0x9' # Sendto documents path ($SENDTO) !define CSIDL_STARTMENU '0xB' # StartMenu path !define CSIDL_MUSIC '0xD' # My Music path ($MUSIC) !define CSIDL_DESKTOPDIR '0x10' # Desktop Directory path !define CSIDL_COMPUTER '0x11' # My Compute...

[C] Command Prompt(명령 프롬프트) 창 띄우지 않고 명령어 실행

#include <iostream> #include <Windows.h> namespace EXEC_COMMAND { namespace RETURN { namespace FAILURE { const int CREATE_PIPE = 1; const int CREATE_PROCESS = 2; } } } int ExecCommand(std::string command, std::string& output); int main() { std::string output; ExecCommand("ping -n 1 142.251.42.164", output); std::cout

개조식

글을 쓸 때 짧게 끊어서 중요한 요점이나 단어를 나열하는 방식을 말한다. (반말처럼...) 아래 "문장1"을 서술식 기술, "문장2"를 개조식이라고 한다. 문장1 프레젠테이션의 스킬을 향상시켜주는 제안에 대한 기술서입니다. 중견 간부의 프레젠테이션에 대한 능력을 향상시켜 업무의 생산성을 높이는 것을 목적으로 합니다. 문장2 프레젠테이션 스킬 향상 과정 안내서 목적 : 중견 간부의 프레젠테이션 능력 배양, 업무 생산성 제고

블로그 편집 시 자주 사용하는 html 태그 모음

출력 문자 HTML 코드 < &lt; > &gt; (Tab) <span style="white-space: pre;"> </span>

[C++] string 자료형 대문자, 소문자 변환

https://github.com/MoongStory/StringTool tolower, toupper 기능 참고.

Integrity Level SID 값

const char * const INTEGRITY_LEVEL_SID_UNTRUSTED = "S-1-16-0"; const char * const INTEGRITY_LEVEL_SID_BELOW_LOW = "S-1-16-2048"; const char * const INTEGRITY_LEVEL_SID_LOW = "S-1-16-4096"; const char * const INTEGRITY_LEVEL_SID_MEDIUM_LOW = "S-1-16-6144"; const char * const INTEGRITY_LEVEL_SID_MEDIUM = "S-1-16-8192"; const char * const INTEGRITY_LEVEL_SID_HIGH = "S-1-16-12288"; const char * const INTEGRITY_LEVEL_SID_SYSTEM = "S-1-16-16384";

[C++] 다양한 형식 간 변환 (형변환)

char *에서 변환 wchar_t에서 변환 * _bstr_t에서 변환 CComBSTR에서 변환 CString에서 변환 basic_string에서 변환 Convert System:: String https://docs.microsoft.com/ko-kr/cpp/text/how-to-convert-between-various-string-types?view=msvc-160 int to string #include <iostream> #include <sstream> int main() { int int_value = 3; std::ostringstream int_to_string; int_to_string string to int, double #include <iostream> #include <sstream> int main() { int int_value = 0; std::stringstream int_string_stream("123"); int_string_stream >> int_value; double double_value = 0.0; std::stringstream double_string_stream("12.3456"); double_string_stream >> double_value; if (!int_string_stream.fail()) { std::cout

컴퓨터 예약 종료

명령 프롬프트 또는 실행 창에 입력. shutdown -s -t 60 이렇게 입력해 주면 된다. 위 명령어에서 60은 초단위 시간이다 60초는 1분이기 때문에 위 스샷대로 입력하면 1분 후에 종료가 되고 만약 1시간 뒤에 종료하고 싶다면 shutdown -s -t 3600 이렇게 입력해 주면 된다. 예약 종료 취소는 shutdown -a shutdown /? 를 입력하면 도움말을 볼 수 있다.

Windows 쓸만한 실행 창 및 명령 프롬프트(CMD) 명령어 및 단축키

콘솔 명령어 control 제어판 appwiz.cpl 프로그램 추가/제거 desk.cpl 디스플레이 등록정보 control Admintools 관리도구 control Userpasswords 사용자 계정 gpedit.msc 로컬 그룹 정책 편집기 관리콘솔 명령어 devmgmt.msc : 장치관리자 shutdown -i : GUI화면으로 시스템 종료, 재부팅 가능 shutdown -s : 시스템 종료 shutdown -r : 시스템 리부팅 shutdown -a : 종료 설정 중지 기타 실행 명령어 netstat : 인터넷 접속 상황 ipconfig /all : ip주소,게이트웨이,서브넷마스크, DNS서버주소,physical주소 dxdiag : 다이렉트X 진단도구 및 그래픽과 사운드의 세부정보를 보여줌 regedit : 레지스트리 편집기 calc : 계산기 charmap : 문자표 pbrush , mspaint : 그림판 control : 제어판 osk : 화상키보드 msconfig : 시스템 구성요소 유틸리티 msinfo32 : 시스템정보 mstsc : 원격 데스크톱 연결 notepad : 메모장 ping -t 사이트주소 : 핑테스트 해당 사이트의 인터넷연결 유무 확인 winver : 윈도우 버전확인 컴퓨터 단축키 모음 Alt+Enter (선택한 항목의 등록 정보 보기 or 선택한 개체의 등록 정보 표시) Alt+Esc (연 순서대로 항목을 순환) F4 키 (내 컴퓨터나 Windows 탐색기에서 주소 표시줄 목록 표시) Windows 로고+Break (시스템 등록 정보 대화 상자 표시) Windows 로고+M (모든 창을 최소화) Windows 로고+Shift+M (최소화된 창을 원래 크기로 복원) Windows 로그+E (내 컴퓨터 열기) Windows 로고+R (실행 대화 상자) Windows 로고+숫자키 (작업표시줄에 등록된 순서대로 실행) Window...

실행 창에서 사용 가능한 명령어 모음

제어판 바로실행 명령어 Contrl Panel의 약자로, 제어판에 나타나는 설정 항목 파일이며, EXE파일과 같이 실행이 가능하다. 일례로 디스플레이 항목의 파일인 desk.cpl파일은 더블 클릭하면 디스플레이 등록 정보가 실행된다. 각 제어판의 항목과 해당 CPL파일의 이름은 다음과 같다. control 제어판 Access.cpl 내게 필요한 옵션 appwiz.cpl 프로그램 추가/제거 bthprops.cpl 블루투스장치설정 desk.cpl 디스플레이 등록정보 firewall.cpl Windows방화벽 hdwwiz.cpl 새하드웨어추가마법사 inetcpl.cpl 인터넷 등록정보 intl.cpl 국가 및 언어옵션 irprops.cpl 적외선포트 설정 joy.cpl 게임컨트롤러 main.cpl 마우스등록정보 mmsys.cpl 사운드및 오디오장치등록정보 ncpa.cpl 네트워크연결 netsetup.cpl 네트워크설정마법사 nusrmgr.cpl 사용자계정 nwc.cpl 네트워크 게이트웨이 odbccp32.cpl ODBC데이터원본 관리자 powercfg.cpl 전원옵션 등록정보 sysdm.cpl 시스템등록정보 telephon.cpl 전화및모뎀 옵션  timedate.cpl 날짜 및 시간 등록정보 wscui.cpl Windows 보안센터 wuaucpl.cpl 자동업데이트 Sapi.cpl 텍스트 음성 변환설정 control Admintools 관리도구 control Folders 폴더옵션 control Userpasswords 사용자 계정 관리콘솔 명령어 certmgr.msc : 인증서 ciadv.msc : 인덱싱서비스 ntmsmgr.msc : 이동식저장소 ntmsoprq.msc : 이동식저장소 운영자 요청 secpol.msc : 로컬보안정책 wmimgmt.msc : WMI(Windows Management Infrastructure) compmgmt.msc : 컴퓨터...

Windows 단축키 모음

http://windows.microsoft.com/en-us/windows/keyboard-shortcuts#keyboard-shortcuts=windows-7 Ctrl+C (복사) Ctrl+X (잘라내기) Ctrl+V (붙여넣기) Ctrl+Z (실행 취소) Delete (삭제) Ctrl + 휠마우스 위로, 또는 아래로 (위로 : 텍스트 글꼴 확대, 아래로:글꼴 작게) Shift+Delete (선택한 항목을 휴지통에 넣지 않고 영구적으로 삭제) 항목을 끌면서 Ctrl 키 누름 (선택한 항목을 복사) 항목을 끌면서 Ctrl+Shift 누름 (선택한 항목의 바로 가기를 만듬) F2 키 (선택한 항목의 이름 바꾸기) Ctrl+A (모두 선택) F3 키 (파일 또는 폴더 찾기) Alt+Enter (선택한 항목의 등록 정보 보기 or 선택한 개체의 등록 정보 표시) Alt+F4 (활성 항목을 닫거나 활성 프로그램을 종료) Alt+스페이스바 (활성 창의 바로 가기 메뉴 열기) Ctrl+F4 (여러 문서를 동시에 열 수 있는 프로그램에서 활성 문서 닫기) Alt+Tab (열린 항목 사이에서 전환) Alt+Esc (연 순서대로 항목을 순환) F4 키 (내 컴퓨터나 Windows 탐색기에서 주소 표시줄 목록 표시) Shift+F10 (선택한 항목의 바로 가기 메뉴 표시) Ctrl+Esc (시작 메뉴 표시) CD-ROM 드라이브에 CD-ROM을 넣을 때 Shift 키 누름(CD-ROM이 자동으로 재생되지 않게 함 Microsoft Natural Keyboard 바로 가기 Windows 로고 (시작 메뉴를 표시하거나 숨김) Windows 로고+Break (시스템 등록 정보 대화 상자 표시) Windows 로고+D (바탕 화면 표시) Windows 로고+M (모든 창을 최소화) Windows 로고+Shift+M (최소화된 창을 원래 크기로 복원) Windows 로그+E (내 컴퓨터 열기) Windows 로...

실행 창에서 명령어 입력하면 프로그램 바로 실행되도록 레지스트리에 추가하기

'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths' 경로로 이동하여 App Paths에 우클릭을 하여 '새로 만들기 - 키'를 선택한다. 그럼 키가 추가가 되는데 이 이름을 실행창에 입력할 명령어 + 확장자로 바꿔준다. 예를들면 게임중의 하나인 League Of Legends라는 게임을 실행창에서 'lol' 이라고 입력하면 실행이 되도록 하려고 한다면 키 이름을 'lol.exe'로 변경해준다. 그리고 추가하여 이름을 바꾼 키를 마우스 우클릭하여 '새로 만들기 - 문자열 값'을 선택해 준다. 그럼 레지스트리가 하나 추가가 되는데, 이름을 Path로 변경해준다. 그럼 기본값 레지스트리와 추가된 Path라는 레지스트리 2개가 있는데 기본값에는 실행 파일 확장자까지 입력을 해주고 추가한 Path 레지스트리에는 실행 파일이 들어있는 경로를 입력해준다. ex) (기본값) - "C:\Riot Games\League of Legends\lol.launcher.exe" Path - "C:\Riot Games\League of Legends\" 여기까지 했으면 레지스트리 창을 닫고 맨 처음에 했던 실행창에 'lol'을 다시 입력해보면 League Of Legends 게임 클라이언트가 실행 되는것을 확인할 수 있다.

유용한 소프트웨어

프리웨어 (무료) microsoft Garage Mouse without Borders 하나의 키보드, 마우스로 2대의 PC 제어하는 프로그램. https://www.microsoft.com/en-us/download/details.aspx?id=35460 GM HDD SCAN 하드디스크 및 플래쉬 메모리에 대한 배드섹터 검사, 상태 체크 프로그램. http://www.gmdata.co.kr/gmtools/hddscan.html Microsoft Automate 자동화 프로그램. https://flow.microsoft.com/ko-kr/ WinMerge 파일 텍스트 비교 프로그램. 2개의 텍스트 문서의 내용을 비교해주는 프로그램으로 수정 전과 수정 후의 파일을 비교하여 어느 부분이 변경되었는지 비교하여 보여주며, 두 파일간에 다른 부분 편집 또한 손쉽게 할 수 있도록 되어있다. https://winmerge.org/ SysinternalsSuite MS에서 제공하는 각종 윈도우 툴들. procexp나 dbgview 등등 분석 툴들을 모아놓은 패키지이다. https://docs.microsoft.com/ko-kr/sysinternals/downloads/sysinternals-suite Dependency Walker (dll 분석 툴) dll이나 exe 파일을 실행하는데 필요한 다른 dll의 dependency를 확인할 수 있고, dll의 경우 해당 dll의 함수 목록을 확인할 수 있다. http://www.dependencywalker.com/ An open-source modern Dependency Walker. (x64) https://github.com/lucasg/Dependencies DependencyWalker.Net https://github.com/isindicic/DependencyWalker.Net VM Player (가상 머신) VM Ware의 무료 버전, snapshot 기능이 없어 많이 아쉽다. https://www.vmware....