2013-06-10 3 views
1

AutoIt 스크립트를 통해 프로그램 추가 또는 제거에서 프로그램을 제거하려고합니다.autoit을 통한 프로그램 제거를 자동화하는 방법은 무엇입니까?

* 레지스트리 키 제거를 통해 제거하지 않으려합니다. * 제거 프로그램을 실행하여 제거하고 싶지 않습니다. 나는 목록에서 올바른 프로그램 이름을 인식하고 제거를 호출하는 데 실패하고 그러나 나는 appwiz.cpl을 명령

에 의해 "프로그램을 제거 추가"를 열 수 있습니다

.

내가 원하는 것은 "Helloworld"와 같은 목록에서 내 프로그램을 인식하고 제거를 호출하는 것입니다.

답변

3

"프로그램 추가 또는 제거"의 제거 목록이 만들어진 모든 해당 레지스트리 값을 루프 할 수 있습니다 ... 그리고 실행하려는 명령을 직접 추출하십시오. 이 예제에서는 메시지 상자에 표시하지만, 디스플레이 이름"Helloworld"과 직접 비교 한 다음 UninstallStringRun(...)으로 실행할 수 있습니다. 이는 "프로그램 추가 또는 제거"가 호출하는 것과 완전히 동일합니다. 단순히 레지스트리 키를 제거한다는 의미는 아닙니다. 그리고 그것은 "any"제거 프로그램을 실행하는 것을 의미하는 것이 아니라, appwiz.cpl에서 "제거"버튼을 클릭하는 것과 같은 바로 그 프로그램을 정확하게 제거하는 데 필요한 적절한 제거 프로그램을 호출하는 것을 의미합니다. 결과적으로 요청한 것을 수행하기 위해이 솔루션은 잘 작동합니다. 그것은 acutally ... 프로그램의 목록을

$uninstall_path1 = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall" 
searchUninstallStrings($uninstall_path1) 
$uninstall_path2 = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" 
searchUninstallStrings($uninstall_path2) 

Func searchUninstallStrings($uninstall_path) 
    $i = 0 
    While True 
     $i += 1 
     Local $entry = RegEnumKey($uninstall_path, $i) 
     If @error <> 0 Then ExitLoop 
     $regPath = $uninstall_path & "\" & $entry 
     $DisplayName = RegRead($regPath, "DisplayName") 
     If $DisplayName <> "" Then 
      $message = $DisplayName & @CR 
      $UninstallString = RegRead($regPath, "UninstallString") 
      If $UninstallString <> "" Then 
       $message &= "Uninstall: '" & $UninstallString & "'" 
       MsgBox(4096, "SubKey #" & $i & ": " & $entry, $message) 
      EndIf 
     EndIf 
    WEnd 
EndFunc 

행운을 appwiz.cpl을 사이클을 처리하지 않습니다!

+1

가 나는 또한 내가 의도 정확하게 수행이 artical 발견 할 일 ... http://www.tech-recipes.com/rx/2947/windows_uninstall_application_command_line/ – RON12345

-1

내가 성공적으로 프로그램을 자동화 할 수 있었다는 프로그램을 열려면 다음 명령을 사용하여 제거하고 키 입력의 일련의 다음 제어판 메뉴 특징 :

Run("C:\Windows\System32\control.exe appwiz.cpl") 
WinWait("Programs and Features") 
WinActivate("Programs and Features") 
Send("ProgramNameHere") 
Send("{Enter}") 
관련 문제