Windows 프로그램에서 프로그램 전원 켜기 자동 시작
BOOL CMainWnd::SetAutoRun()//
{
// ,
HKEY hKey;
//
LPCTSTR lpRun="Software\\Microsoft\\Windows\\CurrentVersion\\Run";
DWORD dwDisposition;
// Key
long lRet=RegCreateKeyEx(HKEY_LOCAL_MACHINE,lpRun,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,&dwDisposition);
if (lRet==ERROR_SUCCESS)
{
char pFileName[MAX_PATH]={0};
//
DWORD dwRet=GetModuleFileName(NULL,pFileName,MAX_PATH);
// key,
lRet=RegSetValueEx(hKey,"WorkAssist",0,REG_SZ,(BYTE*)pFileName,dwRet);
//
RegCloseKey(hKey);
return TRUE;
}
}
위의 이 함수는 현재 프로그램을 켜서 시작하도록 설정합니다.그러나 위의 프로그램이 실행된 후 등록표의'Software\\Microsoft\Windows\\CurrentVersion\\Run'에서 자신이 설정한'WorkAssist'항목을 보지 못했기 때문에 이 프로그램은 자동으로 시작할 수 없습니다.그리고 다시 인터럽트 디버깅을 하는 과정에서 RegCreateKeyEx 함수의 반환 값이 ERROR 이 아닌 것을 발견했다SUCCESS가 아닌 5로 ERROR에 진입SUCCESS의 정의 섹션, ERROR 검색SUCCESS 아래에 다음 행 매크로 정의가 있는 매크로도 있습니다.
//
// MessageId: ERROR_ACCESS_DENIED
//
// MessageText:
//
// Access is denied.
//
#define ERROR_ACCESS_DENIED 5L
이것은 RegCreateKeyEx 함수 반환 값이 5일 때 권한이 부족하다는 것을 의미하지만, 내가 RegCreateKeyEx를 호출할 때 지정한 여섯 번째 인자는 KEY 이다ALL_ACCESS, 이 매개 변수는 이 함수에 지정된 권한이 KEY 임을 나타내는 것처럼 보입니다ALL_ACCESS, 그러나 실제로 이 변경은 효과가 없는 것 같아서 이 사고방식을 따라 문제의 해결 방법을 찾았다.
프로젝트 속성 - 구성 속성 - 링크 - 목록 파일 - UAC 실행 레벨에서 Require Administrator(/level="require Administrator")로 설정하여 관리자로 Visual Studio를 다시 실행한 후
이 컴파일 설정을 변경하면 비주얼 스튜디오가 프로젝트를 다시 컴파일하고 비주얼 스튜디오에 '관리자 신분' 이라는 글자가 나타납니다.
이렇게 하면 프로그램이 실행되고 ERROR 로 돌아갑니다.SUCCESS에서 레지스트리를 수정합니다.이때 컴퓨터에 360 등 보안 소프트웨어가 설치되어 있으면 프로그램이 등록표를 수정할 것을 경고할 수 있다.허용 프로그램을 누르면 됩니다.
위의 프로그램이 정상적으로 실행될 수 있다면 좋겠지만 시스템이 64비트인데 비주얼스튜디오가 32비트를 선택했다면 등록표 재지정 문제가 발생할 수 있습니다."WorkAssist"를 "Software\Microsoft\\Windows\\CurrentVersion\\Run"에 설정하지 않고 "HKEY LOCAL MACHINE\SOFTWARE\Wow6432Node\"아래에 설정합니다.구체적으로 이 문장을 참고할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.