'Windows > RAD Studio' 카테고리의 다른 글
[DEL] 논리드라이브 클러스터 크기 확인 (Win32) (0) | 2015.04.21 |
---|---|
[Del] Compiler Directive (0) | 2014.12.08 |
[BCB] 관리자 권한 확인 (0) | 2013.07.09 |
[BAT] 관리자 권한 확인 (0) | 2013.07.09 |
enum 값 문자열 출력 (0) | 2013.07.05 |
[DEL] 논리드라이브 클러스터 크기 확인 (Win32) (0) | 2015.04.21 |
---|---|
[Del] Compiler Directive (0) | 2014.12.08 |
[BCB] 관리자 권한 확인 (0) | 2013.07.09 |
[BAT] 관리자 권한 확인 (0) | 2013.07.09 |
enum 값 문자열 출력 (0) | 2013.07.05 |
#include <sddl.h>
bool __fastcall IsAdministratorPrivilege(void)
{
DWORD dwSize;
HANDLE hToken;
PTOKEN_MANDATORY_LABEL ptml;
LPWSTR szSid;
::OpenProcessToken(::GetCurrentProcess(), TOKEN_QUERY, &hToken);
::GetTokenInformation(hToken, TokenIntegrityLevel, NULL, 0, &dwSize);
ptml = (PTOKEN_MANDATORY_LABEL)::HeapAlloc(::GetProcessHeap(), HEAP_ZERO_MEMORY, dwSize);
try {
::GetTokenInformation(hToken, TokenIntegrityLevel, ptml, dwSize, &dwSize);
::ConvertSidToStringSid(ptml->Label.Sid, &szSid);
try {
return (_wcscmpi(szSid, __TEXT("S-1-16-12288")) == 0);
} __finally {
::LocalFree(szSid);
}
} __finally {
::HeapFree(::GetProcessHeap(), 0, (LPVOID)ptml);
}
return false;
}
BCB6 에서는 PTOKEN_MANDATORY_LABEL 과 ToeknIntegrityLevel 이 없다.
다음 코드를 앞에 추가하면 잘 동작할 것이다.
typedef struct _TOKEN_MANDATORY_LABEL {
SID_AND_ATTRIBUTES Label;
} TOKEN_MANDATORY_LABEL, *PTOKEN_MANDATORY_LABEL;
#define TokenIntegrityLevel ((TOKEN_INFORMATION_CLASS)25)
[Del] Compiler Directive (0) | 2014.12.08 |
---|---|
WMI (Windows Management Instruments) 이용 쉽게하기. (하드웨어 정보) (0) | 2014.01.09 |
[BAT] 관리자 권한 확인 (0) | 2013.07.09 |
enum 값 문자열 출력 (0) | 2013.07.05 |
수학함수로 숫자 길이 구하기 (0) | 2013.01.22 |
@ECHO OFF
AT > NUL
IF %ERRORLEVEL% EQU 0 (
ECHO Administrator mode
) ELSE (
ECHO User mode
)
Pause
WMI (Windows Management Instruments) 이용 쉽게하기. (하드웨어 정보) (0) | 2014.01.09 |
---|---|
[BCB] 관리자 권한 확인 (0) | 2013.07.09 |
enum 값 문자열 출력 (0) | 2013.07.05 |
수학함수로 숫자 길이 구하기 (0) | 2013.01.22 |
모니터 개수 변경으로 인해 화면 밖으로 벗어난 화면 옮기기 (0) | 2012.08.08 |
enum Value {vlOne, vlTwo, vlThree};
Value value = 1;
이경우 value 의 값에 따라 "vlTwo" 가 필요한 경우가 있다.
이때 다음처럼 사용하면된다.
System::Typinfo::GetEnumName(__delphirtti(TType), Value);
__delphirtti 에 VCL 타입만 적용 가능한 하위버전의 개발툴에서는 다음과 같이 사용하면 된다.
(2007 까지는 VCL 타입만 가능한 것을 확인하였고, XE4 이후는 enum 도 가능한 것을 확인하였다. 그 사이 버전은 모르겠다.)
#define MakeEnumHelper(T, C) \
class C : public TObject { \
public: \
static String __fastcall GetEnumName(int V) { \
return Typinfo::GetEnumName(*Typinfo::GetPropInfo(__typeinfo(C), "P")->PropType, V);\
} \
__published: \
__property T P = {default = 0}; \
};
사용예)
MakeEnumHelper(TType, TTypeHelper);
ShowMessage(TTypeHelper::GetEnumName(Value));
[BCB] 관리자 권한 확인 (0) | 2013.07.09 |
---|---|
[BAT] 관리자 권한 확인 (0) | 2013.07.09 |
수학함수로 숫자 길이 구하기 (0) | 2013.01.22 |
모니터 개수 변경으로 인해 화면 밖으로 벗어난 화면 옮기기 (0) | 2012.08.08 |
[BCB] cocoa framework 의 retain 흉내내기 (0) | 2012.07.20 |
log10 함수를 이용해 숫자값에 대한 문자형태의 길이를 구할 수 있다.
(int)log10((double)iValue + 1) + 1
int iValue = 123;
int iLength = (int)log10((double)iValue + 1) + 1;
[BAT] 관리자 권한 확인 (0) | 2013.07.09 |
---|---|
enum 값 문자열 출력 (0) | 2013.07.05 |
모니터 개수 변경으로 인해 화면 밖으로 벗어난 화면 옮기기 (0) | 2012.08.08 |
[BCB] cocoa framework 의 retain 흉내내기 (0) | 2012.07.20 |
[BCB] 외부 실행파일 실행 후 종료시까지 대기하기 (0) | 2012.07.20 |
참고링크: http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=1094
코드 몇 줄 안되지만 필요할때는 귀찮아서 안하게 되어 미리 적어 놓음.
링크의 코드를 내맘대로 줄이고 테스트는 안한거라 적용 후 테스트 필요.
enum 값 문자열 출력 (0) | 2013.07.05 |
---|---|
수학함수로 숫자 길이 구하기 (0) | 2013.01.22 |
[BCB] cocoa framework 의 retain 흉내내기 (0) | 2012.07.20 |
[BCB] 외부 실행파일 실행 후 종료시까지 대기하기 (0) | 2012.07.20 |
[DEL] 원하는 합의 무작위 숫자 구하기 (0) | 2012.02.15 |
retainCount 매커니즘을 흉내내보았다.
객체할당시 4바이트를 추가로 할당하여 retainCount 영역으로 사용.
실사용은 해보지 않은 코드이므로 충분한 검증이 필요하다.
수학함수로 숫자 길이 구하기 (0) | 2013.01.22 |
---|---|
모니터 개수 변경으로 인해 화면 밖으로 벗어난 화면 옮기기 (0) | 2012.08.08 |
[BCB] 외부 실행파일 실행 후 종료시까지 대기하기 (0) | 2012.07.20 |
[DEL] 원하는 합의 무작위 숫자 구하기 (0) | 2012.02.15 |
WM_SETREDRAW (BeginUpdate, EndUpdate) (0) | 2011.10.27 |
쉬면서 해놓은거 같은 코드가 temp 폴더에 있어서 옮겨놈.
해당 예제는 one thread 로 multi thread 코드로 바꾸어 메인 작업이 중단되지 않게 사용하면 되겠다.
모니터 개수 변경으로 인해 화면 밖으로 벗어난 화면 옮기기 (0) | 2012.08.08 |
---|---|
[BCB] cocoa framework 의 retain 흉내내기 (0) | 2012.07.20 |
[DEL] 원하는 합의 무작위 숫자 구하기 (0) | 2012.02.15 |
WM_SETREDRAW (BeginUpdate, EndUpdate) (0) | 2011.10.27 |
[RAD] 창 흔들기 (0) | 2011.09.08 |
[BCB] cocoa framework 의 retain 흉내내기 (0) | 2012.07.20 |
---|---|
[BCB] 외부 실행파일 실행 후 종료시까지 대기하기 (0) | 2012.07.20 |
WM_SETREDRAW (BeginUpdate, EndUpdate) (0) | 2011.10.27 |
[RAD] 창 흔들기 (0) | 2011.09.08 |
[DEL] 하위 파일 그룹화 (0) | 2011.08.22 |
[BCB] 외부 실행파일 실행 후 종료시까지 대기하기 (0) | 2012.07.20 |
---|---|
[DEL] 원하는 합의 무작위 숫자 구하기 (0) | 2012.02.15 |
[RAD] 창 흔들기 (0) | 2011.09.08 |
[DEL] 하위 파일 그룹화 (0) | 2011.08.22 |
[BCB] Vista 이상의 운영체제에서 폼 스크롤 생성 시 스킨이 바뀌는 문제 (6이하버전) (0) | 2010.12.22 |