2017-02-22 89 views
0

我想知道是否有可能獲得我的PC上安裝的所有應用程序的列表(作爲文本文件)以及它們的位置。列出Windows應用程序和路徑

例如,我在我的電腦上安裝了谷歌瀏覽器。我想這顯示爲:

Google Chrome 
C:\Program Files\...(path)...\chrome.exe 

或沿着這些線。 我已經看到了PowerShell和其他語言的程序,使用註冊表,找到一個或另一個,但不是兩個。如何(以及用什麼語言)這可能是可能的?

編輯:這裏的主要問題是應用程序路徑和卸載(我可能會找到名稱)的註冊表項是他們的密鑰具有完全不同的名稱。但這大概是可能的,因爲「更改或刪除程序」實用程序包含兩者。有沒有辦法編程將其轉換爲文本文件?

+1

您可能沒有看到它,因爲安裝的程序列表和這些程序的主要可執行文件之間沒有任何直接關聯。您可能會想出一種方法,例如,獲取程序和功能中給定條目的所有可執行文件,但許多程序都帶有多個可執行文件。你到底在找什麼? –

+0

可能的重複[檢查程序是否安裝,如果是這樣轉到下一個powershell](http://stackoverflow.com/questions/42228400/check-if-program-is-installed-if-so-go-to-next- powershell) – BenH

+0

特別是你可能會在Uninstall Keys中尋找InstallLocation的值。 – BenH

回答

0

我想的特殊性我自己的答案,使用批處理代碼。我想知道Cortana如何快速搜索已安裝的程序及其名稱,當我意識到使用了開始菜單條目時。下面的代碼片段找到名稱和安裝的程序快捷方式的位置(不包括卸載程序):

@echo off 
break > names.txt 
break > locations.txt 
set "curpath=%cd%" 
cd "C:\ProgramData\Microsoft\Windows\Start Menu" 
FOR /R %%G IN ("*.lnk") DO (
    echo "%%~nG" |findstr /i "install">nul || (
     echo %%~nG >> "%curpath%/names.txt" 
     echo %%G >> "%curpath%/locations.txt" 
    ) 
) 
cd "C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs" 
FOR /R %%G IN ("*.lnk") DO (
    echo "%%~nG" |findstr /i "install">nul || (
     echo %%~nG >> "%curpath%/names.txt" 
     echo %%G >> "%curpath%/locations.txt" 
    ) 
) 

這些快捷鍵可以運行,而不是EXE文件來打開程序。

2

人們可以用這一個班輪:

Get-ChildItem -Path HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall | Get-ItemProperty | ? { -not [string]::IsNullOrEmpty($_.DisplayName) } | Sort-Object -Property DisplayName | Select-Object -Property DisplayName, DisplayVersion, InstallLocation 

缺點:並非所有的應用程序設置的InstallPath屬性。

0

我不會打擾太多的卸載鍵,只是搜索程序文件目錄。

此命令爲您提供了各exe文件名的程序文件子目錄裏面:

$ProgPath = $env:ProgramFiles, ${env:ProgramFiles(x86)} 
dir $ProgPath -Directory | Select -Property Name, @{n="ExeFiles";e={ (dir $_.FullName -Filter *.exe -Recurse -Depth 1).Name -join ","}} | Where ExeFiles 

這是假定它是一個64位操作系統,否則丟棄第二路徑。

它也不是完美的,因爲它可能返回幾個前男友的名字,但至少你不用擔心我已經找到了它寫哪些註冊表項的安裝程序等