IT වැඩ්ඩො එන්න

ctpgamage

Well-known member
  • Jul 13, 2009
    2,494
    207
    63
    windows 10 වල install කරලා තියෙන software වල ලිස්ට් එකක් ගන්න පුලුවන්ද install කරපු ඩේට් එකත් සමග
     

    LZP1992

    Well-known member
  • Feb 6, 2014
    5,672
    6,001
    113
    @ගෙදර
    windows 10 වල install කරලා තියෙන software වල ලිස්ට් එකක් ගන්න පුලුවන්ද install කරපු ඩේට් එකත් සමග
    Save as "script.bat" and run this

    Code:
    @echo off
    setlocal enabledelayedexpansion
    
    REM --- Configuration ---
    set "OutputFile=Installed_Software_Report_%date:~-4,4%%date:~-10,2%%date:~-7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.csv"
    echo Generating CSV report: %OutputFile%
    echo.
    
    REM --- Header for the CSV file ---
    (
        echo "Display Name","Install Date"
    ) > "%OutputFile%"
    
    REM --- Registry paths to check ---
    set "RegPaths[0]=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
    set "RegPaths[1]=HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall"
    REM Add more paths if needed, e.g., for HKCU:
    REM set "RegPaths[2]=HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
    REM set "RegPaths[3]=HKCU\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall"
    
    REM --- Process each registry path ---
    for /L %%N in (0,1,1) do (
        if defined RegPaths[%%N] (
            set "CurrentRegPath=!RegPaths[%%N]!"
            echo Processing: !CurrentRegPath!
    
            REM Iterate through each subkey under the Uninstall key
            for /f "delims=" %%K in ('reg query "!CurrentRegPath!" 2^>nul') do (
                set "KeyName=%%K"
                set "DisplayName="
                set "InstallDate=N/A"
    
                REM Check if it's a valid subkey (not the root path itself)
                if not "!KeyName!"=="!CurrentRegPath!" (
    
                    REM Get DisplayName
                    for /f "tokens=2,*" %%A in ('reg query "!KeyName!" /v DisplayName 2^>nul ^| findstr /R /C:"DisplayName"') do (
                        set "DisplayName=%%B"
                    )
    
                    REM Get InstallDate
                    for /f "tokens=2,*" %%A in ('reg query "!KeyName!" /v InstallDate 2^>nul ^| findstr /R /C:"InstallDate"') do (
                        set "RawInstallDate=%%B"
                        REM Attempt to format YYYYMMDD to YYYY-MM-DD if it looks like it
                        if "!RawInstallDate:~8,1!"=="" if "!RawInstallDate:~4,1!" NEQ "-" if "!RawInstallDate:~4,1!" NEQ "/" (
                            set "InstallDate=!RawInstallDate:~0,4!-!RawInstallDate:~4,2!-!RawInstallDate:~6,2!"
                        ) else (
                            set "InstallDate=!RawInstallDate!"
                        )
                    )
    
                    REM If DisplayName exists and doesn't look like a Windows Update KB
                    if defined DisplayName (
                        echo !DisplayName! | findstr /R /C:"KB[0-9][0-9][0-9][0-9][0-9][0-9]*" >nul
                        if errorlevel 1 (
                            echo !DisplayName! | findstr /R /C:"Update for Microsoft" >nul
                            if errorlevel 1 (
                               REM Clean quotes from DisplayName before wrapping, just in case
                               set "CleanDisplayName=!DisplayName:"=!"
                               set "CleanInstallDate=!InstallDate:"=!"
                               
                               (echo "!CleanDisplayName!","!CleanInstallDate!") >> "%OutputFile%"
                            )
                        )
                    )
                )
            )
        )
    )
    
    endlocal
    pause

    This is a chatgpt generated 💪
     
    Last edited:

    ctpgamage

    Well-known member
  • Jul 13, 2009
    2,494
    207
    63
    Try this powershell script
    Save as "script.ps" and run this

    Code:
    $Outputfile = "C:\InstalledSoftwareList.txt"
    
    $registryPaths = @(
        "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*",
        "HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*"
    )
    
    # Collect software info
    $softwareList = foreach ($path in $registryPaths) {
        Get-ItemProperty $path | Where-Object { $_.DisplayName } | Select-Object `
            @{Name = 'Name'; Expression = { $_.DisplayName } },
            @{Name = 'Version'; Expression = { $_.DisplayVersion } },
            @{Name = 'InstallDate'; Expression = {
                if ($_.InstallDate -match '^\d{8}$') {
                    [datetime]::ParseExact($_.InstallDate, 'yyyyMMdd', $null)
                } elseif ($_.InstallDate -match '^\d{6}$') {
                    [datetime]::ParseExact($_.InstallDate, 'yyyyMM', $null)
                } else {
                    $_.InstallDate
                }
            }}
    }
    
    $softwareList | Format-Table -AutoSize | Out-String | Set-Content $outputFile

    This is a chatgpt generated 💪
    meka komada run karanne
     

    milkywayromanholiday

    Well-known member
  • Apr 25, 2025
    518
    365
    63
    windows 10 වල install කරලා තියෙන software වල ලිස්ට් එකක් ගන්න පුලුවන්ද install කරපු ඩේට් එකත් සමග
    Control panel, settings ඔය දෙකේම තියෙන්නේ බං ඕක.
     

    ctpgamage

    Well-known member
  • Jul 13, 2009
    2,494
    207
    63
    Try this powershell script
    Save as "script.ps" and run this

    Code:
    $Outputfile = "C:\InstalledSoftwareList.txt"
    
    $registryPaths = @(
        "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*",
        "HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*"
    )
    
    # Collect software info
    $softwareList = foreach ($path in $registryPaths) {
        Get-ItemProperty $path | Where-Object { $_.DisplayName } | Select-Object `
            @{Name = 'Name'; Expression = { $_.DisplayName } },
            @{Name = 'Version'; Expression = { $_.DisplayVersion } },
            @{Name = 'InstallDate'; Expression = {
                if ($_.InstallDate -match '^\d{8}$') {
                    [datetime]::ParseExact($_.InstallDate, 'yyyyMMdd', $null)
                } elseif ($_.InstallDate -match '^\d{6}$') {
                    [datetime]::ParseExact($_.InstallDate, 'yyyyMM', $null)
                } else {
                    $_.InstallDate
                }
            }}
    }
    
    $softwareList | Format-Table -AutoSize | Out-String | Set-Content $outputFile

    This is a chatgpt generated 💪
    meka save karanna ona extension eka ps kiyalada ps1 kiyalada
     

    LZP1992

    Well-known member
  • Feb 6, 2014
    5,672
    6,001
    113
    @ගෙදර
    Last edited:

    thalia

    Well-known member
  • Sep 8, 2014
    1,173
    877
    113
    සයිබරේ තමා
    1748527531598.png


    Wise program uninstaller ekenm pennanwa
     

    Cole Phelps

    Well-known member
  • Apr 9, 2025
    1,331
    2,201
    113
    California
    if installed date isn't a must, this simple command would do the job

    win + r
    type pwsh and press enter
    copy and paste
    winget list > Downloads\output.txt