2010-11-30 5 views
0

일부 응용 프로그램을 제거하고 레지스트리에서 소프트웨어 설치 열거 값을 읽는 중입니다.레지스트리 값을 새로 고치는 방법

문제는 제거 후 화면 또는 regedit가 새로 고쳐지지 않는 한 레지스트리 값을 변경하지 않는 것입니다. 상쾌하게 한 후에 나는 정확한 가치를 얻고있다.

일부 사용자가 파이썬 코드로 regedit를 새로 고칠 수 있습니까?

감사합니다, upendra

답변

1

나는 "상쾌한"에 의해 "화면,"컴퓨터를 다시 시작하는 의미한다고 가정? 그럼에도 불구하고 시스템을 다시 시작한 후에 수정 한 레지스트리 키가 올바르게 업데이트되는지 확인할 수 있습니다. 레지스트리는 게으른 플러시 및 작성기 스레드로 업데이트되므로 내 생각에 변경 한 내용이 즉시 레지스트리로 플러시되지는 않지만이 레지스트리 값을 수정하는 방법에 대한 충분한 정보는 제공되지 않습니다. 나를 위해 대안 솔루션을 제안 할 수 있습니다.

더 중요한 것은 무엇을하려는 것일까 요? 제거 프로그램에서 응용 프로그램이 제거되었는지 확인하려고합니까? 왜 이것이 필요한가? 레지스트리 편집이 커밋되고 즉시 다시 읽히는 것을 기대하는 것보다 나은 방법이 필요하다고 생각합니다.

0

레지스트리 키를 수정하고 시스템을 다시 시작하지 않고이 값을 읽으 려합니다.

화면을 새로 고침 (F5 버튼)하면 수동으로 읽을 수 있지만 파이썬으로 캡처하는 방법을 알려주세요.

1

나는 같은 종류의 문제가 있습니다. 파이썬 도구와 환경을 "설치"하고 레지스트리에 시스템 변수를 생성합니다. 내가 기대처럼

def RefreshEnv(): 
    HWND_BROADCAST = 0xFFFF 
    WM_SETTINGCHANGE = 0x1A 

    SMTO_ABORTIFHUNG = 0x0002 

    result = ctypes.c_long() 
    SendMessageTimeoutW = ctypes.windll.user32.SendMessageTimeoutW 
    SendMessageTimeoutW(HWND_BROADCAST, WM_SETTINGCHANGE, 0, u'Environment', 
         SMTO_ABORTIFHUNG, 5000, ctypes.byref(result)) 

이 방법은 레지스트리를 새로 고침되지 않은 : 나는 다음과 같이 레지스트리를 새로 고치려면. Windows에서 시스템 변수를 편집하려면 창을 열어야하며 새로 고치려면 OK을 클릭하십시오. 그렇지 않으면 내 설치된 도구가 환경 변수를 잡으려고 시도하는 동안 KeyError과 충돌합니다.

위의 Refresh 기능이 도움이 될지 모르겠지만 적어도 시도하는 것입니다.

관련 문제