QSettings를 사용해 레지스트리를 수정한다.
void IntroDialog::blockRDP()
{
// 원격제어 서비스 중단을 위한 레지스트리 수정
onIntroDlgDebug(QString("[%0] Check RDP").FUN_INFO);
try
{
QSettings registry("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server",QSettings::NativeFormat);
if(registry.value("fDenyTSConnections") == 0){
onIntroDlgDebug(QString("[%0] Disable RDP").FUN_INFO);
registry.setValue("fDenyTSConnections",1);
registry.sync();
}
}catch(...)
{
}
}
관리자 권한을 부여하는 방법에는 두가지 방법이 있습니다.
이미 배포되어있는 경우에는 첫번째 방법을 적용하기 어렵습니다.
소스의 레지스트리 수정은 어플리케이션이 관리자로 실행되어야 정상적으로 작동하므로
위의 소스를 정상적으로 작동시키려면 어플리케이션에 관리자 권한을 부여야 해야합니다.
#include <windows.h>
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "프로젝트명.exe.manifest"
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="2.0.0.0" processorArchitecture="X86"
name="App" type="win32" />
<description>App</description>
<dependency />
<!-- Identify the application security requirements. -->
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="requireAdministrator"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
<!-- padding to four-byte multiple file size including the byte order mark -->
<!-- padding 123 -->
</assembly>
win64
{
RC_FILE = 프로젝트명.rc
}