2017-01-08 3 views
0

배치 파일 (powershell없이)을 사용하여 Windows 7을 실행하는 컴퓨터에서 Windows 제어판 설정을 몇 가지 변경하는 방법을 찾고 있습니다.배치 파일을 사용하여 Windows 제어판의 다양한 설정 변경

필요한 설정은 다음과 같습니다

에서 powercfg 패널에서

:

  • AC에 모니터 제한 시간 (비활성화로 전환)
  • AC에 HDD 시간 초과 (비활성화로 전환)
  • 대기 시간 초과에 AC (사용 안 함으로 전환)
  • 최대 절전 모드 시간 초과 (스위치 사용 안 함)
  • 하드 워치 이미이 스크립트를 시도

    • 종료 버튼의 동작 (스위치를 변경하는 사용자)

    : 전원 버튼 (비활성화로 전환) 시작 메뉴 패널에서

있습니다

@Echo Off 
POWERCFG /CHANGE monitor-timeout-ac 0 
POWERCFG /CHANGE disk-timeout-ac 0 
POWERCFG /CHANGE standby-timeout-ac 0 
POWERCFG /CHANGE hibernate-timeout-ac 0 
exit 

하지만 다른 설정을 가져 오는 방법을 찾지 못했습니다.

내가 당신에게 내 솔루션을 설명하기 전에, 내가 대신 현재의 방식을 변경의 사본을 현재 전원 구성표를 복사 작업을 권합니다 앞으로

+1

https://stackoverflow.com은 무료 스크립트/코드 작성 서비스가 아닙니다. 지금까지 시도한 내용 (이미 사용하고있는 스크립트/코드 포함)과 문제가있는 부분을 알려 주시면 특정 문제를 해결하기 위해 노력할 수 있습니다. [좋은 질문을하는 법은 무엇입니까?] (https://stackoverflow.com/help/how-to-ask)도 읽어야합니다. – DavidPostill

+0

@ JoeWright 문제를 해결할 수 있었습니까? –

답변

1

주셔서 감사합니다. 현재 구성표는 기본 구성표 일 수 있으며 백업하지 않고 변경하면 위험 할 수 있습니다. 구성 변경을 취소하는 것이 항상 쉬운 것은 아닙니다.

나는 당신과 공유하고 싶은 2 가지 해결책이 있습니다. 첫 번째는 하드웨어 전원 버튼에 대한 해결책을 제시합니다. 그것은 또한 시작 메뉴에서 셧다운을위한 해결책 일지 모르지만 "사용자 변경"에서 설정할 수는 없습니다. 나는 Windows 7 머신에서 테스트했으나 (윈도우 7 머신을 테스트하지 않았기 때문에) 윈도우 7의 시작 메뉴 버튼 (누군가 이것을 확인할 수 있습니까?)에서도 작동 할 수있는 가능성이 있습니다. 문제는 윈도우 10의 시작 메뉴에있는 종료 단추가 실제로 Windows 7과 동일하지 않은 것 같습니다 (Windows 10에는 시작 메뉴에 2 개의 별도 단추가 있습니다 : 하나는 로그 오프하고 사용자 전환은 하나 잠자기 및 재시작, 윈도우 7에는 모든 옵션에 대해 하나의 버튼이 있음).
두 번째 해결 방법은 Windows 7에서 제대로 작동하는 시작 메뉴의 종료 옵션입니다 (이전에 사용 했었습니다).
두 가지 해결책 모두 처음으로 다시 시작해야 할 수도 있습니다.

  1. 은 실제로 당신이 /CHANGE (또는 -change 또는 -x) 플래그를 사용할 수 powercfg 다음 사람과 바꿀 수 많은 설정이 있습니다. 하드웨어 전원 단추가 그 중 하나입니다. 또한 시작 메뉴에 종료 버튼 설정이 있지만 도움이 될지 잘 모르겠습니다. 어쨌든 전원 구성표를 변경할 수있는 모든 설정을 확인하려면 전원 구성표의 GUID (36 자의 긴 ID)가 필요합니다. powercfg 항상 GUID 대신 별칭을 사용할 수 있습니다. 선택할 수 있지만 GUID는 스크립트에서 사용하기가 더 쉬운 특정 양식을 사용합니다 (일부 경우 제외).별칭은 읽기 쉽고 이해하고 기억하기 쉽습니다.

    구성표의 GUID를 검색하려면 powercfg -listpowercfg -list 각 전원 구성표에 대해 Power Scheme GUID: <GUID> (<NAME POWER SCHEME>) (이름은 별칭과 동일하지 않음) 형태의 문자열을 인쇄합니다. 그런 다음 특정 전원 구성표 이름을 선택 findstr를 사용 (또는 유일한 활성 체계 단지 powercfg -getactivescheme)이 같은 GUID를 추출하는 FOR /F를 사용할 수 있습니다

    FOR /F "tokens=4" %%G IN ('powercfg /getactivescheme') DO set activeschemeGUID=%%G 
    

    당신은 GUID (또는 별칭)가되면 당신을 그것의 전체 구성을 확인할 수 있습니다

    powercfg -q <Scheme_GUID> 
    

    powercfg -q (또는 첫 번째 코드 예제에서 변수 powercfg -q %activeschemeGUID%) 당신에게 GUID, 별명과 (의 긴 목록을) 줄 것이다 변경할 수있는 활동 계획에 대한 모든 설정 및 그들이 취할 수있는 가치는 (powercfg에서 실제로 값이 아니라 값의 이름을 지정하십시오).
    설정은 하위 그룹으로 그룹화됩니다. 각 하위 그룹 및 설정에는 GUID가 있습니다. 가장 일반적인 하위 그룹 및 설정에는 별칭이 있습니다. 설정 및 하위 그룹에 대해 사용할 수있는 별칭을 모두 확인하려면 powercfg -aliases을 사용할 수 있습니다.

    powercfg -q <Scheme_GUID> <SUB_GUID> <Setting_GUID> 
    

    또는 그 값 (들) 변경 :

    powercfg -setacvalueindex <Scheme_GUID> <SUB_GUID> <Setting_GUID> <New_value_index> 
    powercfg -setdcvalueindex <Scheme_GUID> <SUB_GUID> <Setting_GUID> <New_value_index> 
    

    을 당신은 GUID (또는 별명 사용 가능한 경우)를 취할 수 설정 및 현재 값을 값 확인이 필요합니다 첫 번째는 AC 값 색인을 변경하고 두 번째는 DC (사용 가능한 경우 설정 값을 확인)입니다.

    현재 필요한 설정은 올바른 GUID (사용 가능한 경우 별칭)입니다. 검색 시간을 절약하고 내 옆에 GUID를 제공합니다. 그것들은 디폴트 값이어야하지만, 사용 가능한 모든 설정에서 "power"(대소 문자를 구별하지 않는 검색) 문자열을 검색하여 항상 찾을 수 있습니다. 시작 메뉴의 하드웨어 전원 버튼 동작 설정과 종료 버튼 동작 설정은 동일한 하위 그룹, 즉 별칭이 SUB_BUTTONS이고 GUID가 4f971e89-eebd-4455-a8de-9e59040e7347 인 하위 그룹에 속합니다. 하드웨어 단추는 별칭이 PBUTTONACTION이고 GUID가 7648efa3-dd9c-4e3e-b566-50f929386280입니다. 시작 버튼의 별칭은 UIBUTTON_ACTION이고 GUID는 a7066653-8d6c-40a8-910e-a1f54b84c7e5입니다. 명령 줄에서 powercfg -aliases으로 확인할 수 있습니다./그 대신 별명의 GUID를 함께 시도해야 일을하거나 올바른 GUID를 찾기 위해 노력하지 않으면

    powercfg -q %activeschemeGUID% SUB_BUTTONS PBUTTONACTION 
    powercfg -q %activeschemeGUID% SUB_BUTTONS UIBUTTON_ACTION 
    

    :
    설정을 변경하기 전에, 그들은 명령 행에 걸릴 수와 indices있는 확인 구성에 대한 별명. 필요한 가치 지표를 확인한 후에 설정을 변경할 수 있습니다. 내 경우에는, 하드웨어의 전원 버튼을 비활성화하는 것은 그래서 각각 AC 및 DC에 대한 변경 인덱스 0되었다이었다

    powercfg -setacvalueindex %activeschemeGUID% SUB_BUTTONS PBUTTONACTION 000 
    powercfg -setdcvalueindex %activeschemeGUID% SUB_BUTTONS PBUTTONACTION 000 
    

    나는 유감 스럽지만 UIBUTTON_ACTION에 대한 옵션을 더 로그 오프 없었다. 그래서 나는 당신에게 그걸 보여줄 수는 없지만 같은 원리 였을 것입니다. 이것이 바로 UIBUTTON_ACTION이 시작 메뉴의 트릭을 수행 할 지 확신 할 수없는 이유이기도합니다.

  2. 시작 메뉴의 종료 버튼의 경우 Windows 7에 다른 옵션이 있다는 것을 알고 있습니다. Start_PowerButtonActionHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced에 위치 시키십시오.나는 경고한다 : 레지스트리를 변경하는 것은 섬세하고 실제로 좋은 습관은 아니지만 때로는 일부 구성을 변경하는 유일한 방법이다. 확실하지 않지만 관리자 권한이 필요할 수도 있으므로 관리자 권한으로 실행해야 할 수도 있습니다 (누군가도이를 확인할 수 있습니까?).
    이 레지스트리 취할 수있는 진수 값은 다음과 같습니다 당신은 레지스트리의 현재 값을 확인 regedit GUI를 사용할 수 있습니다

    Action   Value 
    ------------ -------- 
    Change User  100 
    Log Off    1 
    Lock    200 
    Restart    4 
    Sleep    10 
    Hibernate   40 
    Shutdown    2 
    

    . (: regHKCU 대신 HKEY_CURRENT_USER를 사용 편집) 또는 reg와 명령 행에 그 값을 확인

    reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v Start_PowerButtonAction 
    

    레지스트리가 존재 확인하고 당신이 할 수있는 당신의 시작 메뉴의 시스템 종료 버튼에 해당하는 값을 가진 후 그것을 수정하십시오. 그러나 레지스트리를 수정하기 전에 무언가 문제가 발생할 경우를 대비하여 back-up the registry with regedit (this official Windows link도 도움이됩니다)을 확인하십시오.

    reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v Start_PowerButtonAction /t REG_DWORD /d 100 /f 
    

    이 같은 명령을 생성하고 그것을 밖으로 시도 할 수 있습니다 존재하지 않은 경우 : 일괄 작업을 통해 사용할 수
    레지스트리 Start_PowerButtonAction 및 설정 "사용자 변경"을 수정합니다. 작동하지 않으면 백업을 사용하여 적어도 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced 키를 복원하십시오.

테스트를 마친 후에는 배치 스크립트에 해당 명령을 추가 할 수 있습니다.

@echo off 
SetLocal 

REM Get GUID of current power scheme 
FOR /F "tokens=4" %%G IN ('powercfg /getactivescheme') DO set activeschemeGUID=%%G 

REM Custom power scheme name 
set custom_name=CUSTOM_POWER_SCHEME_STACK 

REM Check if it already exists and if it exists, get its GUID 
FOR /F "tokens=4" %%G IN ('powercfg -list ^| find "%custom_name%"') DO (
    REM custom power scheme with that name already exists 
    set custom_GUID=%%G 
    goto :SetCustomActive 
) 

REM Here we're sure it doesn't exist: copy current active scheme and get GUID of that copy 
FOR /F "tokens=4" %%G IN ('powercfg -DUPLICATESCHEME %activeshcemeGUID%') DO et custom_GUID=%%G 

REM change the name of the new scheme (the copy) to the custom name 
powercfg -CHANGENAME %custom_GUID% %custom_name% 

:SetCustomActive 
powercfg -SETACTIVE %custom_GUID% 
set activeschemeGUID=%custom_GUID% 

REM Your code 
POWERCFG /CHANGE monitor-timeout-ac 0 
POWERCFG /CHANGE disk-timeout-ac 0 
POWERCFG /CHANGE standby-timeout-ac 0 
POWERCFG /CHANGE hibernate-timeout-ac 0 

REM change the power button 
powercfg -setacvalueindex %activeschemeGUID% SUB_BUTTONS PBUTTONACTION 000 
powercfg -setdcvalueindex %activeschemeGUID% SUB_BUTTONS PBUTTONACTION 000 

REM Change the start menu button (replace with powercfg method below if available) 
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v Start_PowerButtonAction /t REG_DWORD /d 100 
REM powercfg -setacvalueindex %activeschemeGUID% SUB_BUTTONS UIBUTTON_ACTION ??? 
REM powercfg -setdcvalueindex %activeschemeGUID% SUB_BUTTONS UIBUTTON_ACTION ??? 

EndLocal 
exit /b 0 

가 PS : : 60 초 후에 다시 시작을 생성합니다

SHUTDOWN.exe /r /f /t 60 /d P:2:4 

: 다시 시작을 위해 당신이 exit 전에 scrit의 끝에서 shutdown 명령을 추가 할 수있는 최종 스크립트는 다음과 같을 것이다 그 이유는 "운영 체제 : 재구성 (계획)"입니다. 자세한 내용은 this link을 참조하십시오.

PPS : 레지스트리 솔루션을 사용하는 경우, 당신은 스크립트가 스크립트의 시작 부분에 관리자 권한으로 실행되고 있는지 확인하려면 다음을 사용할 수 있습니다 (관리자 권한이 필요한 경우) :

openfiles > NUL 2>&1 
if %ERRORLEVEL% NEQ 0 (
    REM Command failed => no admin rights 
    echo This executable requires admin-rights! 
    exit /b 1 
) 

openfiles은 항상 관리자 권한이 필요한 명령입니다. 실패 할 경우 스크립트가 관리자로 실행되지 않았 음을 알 수 있습니다.

+0

이 과정에 J.Baoby에게 감사드립니다. 내가 찾고있는 것을 얻었고 내가 모르는 것들을 배웠습니다. –

+0

당신은 환영합니다 :-) 예상대로 작동 했습니까? –

+0

방금 ​​편집을했습니다 :'HKEY_CURRENT_USER' 대신'HKCU'를 사용하는 것이 가장 좋습니다. 나는 그 점을 놓쳤다. 내 사과. –