일부 응용 프로그램을 제거하고 레지스트리에서 소프트웨어 설치 열거 값을 읽는 중입니다.레지스트리 값을 새로 고치는 방법
문제는 제거 후 화면 또는 regedit가 새로 고쳐지지 않는 한 레지스트리 값을 변경하지 않는 것입니다. 상쾌하게 한 후에 나는 정확한 가치를 얻고있다.
일부 사용자가 파이썬 코드로 regedit를 새로 고칠 수 있습니까?
감사합니다, upendra
일부 응용 프로그램을 제거하고 레지스트리에서 소프트웨어 설치 열거 값을 읽는 중입니다.레지스트리 값을 새로 고치는 방법
문제는 제거 후 화면 또는 regedit가 새로 고쳐지지 않는 한 레지스트리 값을 변경하지 않는 것입니다. 상쾌하게 한 후에 나는 정확한 가치를 얻고있다.
일부 사용자가 파이썬 코드로 regedit를 새로 고칠 수 있습니까?
감사합니다, upendra
나는 "상쾌한"에 의해 "화면,"컴퓨터를 다시 시작하는 의미한다고 가정? 그럼에도 불구하고 시스템을 다시 시작한 후에 수정 한 레지스트리 키가 올바르게 업데이트되는지 확인할 수 있습니다. 레지스트리는 게으른 플러시 및 작성기 스레드로 업데이트되므로 내 생각에 변경 한 내용이 즉시 레지스트리로 플러시되지는 않지만이 레지스트리 값을 수정하는 방법에 대한 충분한 정보는 제공되지 않습니다. 나를 위해 대안 솔루션을 제안 할 수 있습니다.
더 중요한 것은 무엇을하려는 것일까 요? 제거 프로그램에서 응용 프로그램이 제거되었는지 확인하려고합니까? 왜 이것이 필요한가? 레지스트리 편집이 커밋되고 즉시 다시 읽히는 것을 기대하는 것보다 나은 방법이 필요하다고 생각합니다.
레지스트리 키를 수정하고 시스템을 다시 시작하지 않고이 값을 읽으 려합니다.
화면을 새로 고침 (F5 버튼)하면 수동으로 읽을 수 있지만 파이썬으로 캡처하는 방법을 알려주세요.
나는 같은 종류의 문제가 있습니다. 파이썬 도구와 환경을 "설치"하고 레지스트리에 시스템 변수를 생성합니다. 내가 기대처럼
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
기능이 도움이 될지 모르겠지만 적어도 시도하는 것입니다.