문제

제품 안내서를 사용하여 응용 프로그램의 설치 날짜를 검색하는 관리 된 API가 있습니까?

감사. 스콧

도움이 되었습니까?

해결책

해당 정보를 얻는 "적절한"방법은 다음과 같습니다. Pinvoke는 사소해야합니다.

다른 팁

고마워요 Rob! 아래에 전체 C# 예제를 추가했습니다.

    [DllImport("msi.dll", CharSet = CharSet.Unicode)]
    static extern Int32 MsiGetProductInfo(string product, string property, [Out] StringBuilder valueBuf, ref Int32 len);

    static void Main(string[] args)
    {
        Int32 len = 512;
        var builder = new StringBuilder(len);
        MsiGetProductInfo("{0db93d2f-a9e7-417f-9425-5e61e82c0868}", "InstallDate", builder, ref len);

        var installDate = DateTime.ParseExact(builder.ToString(), "yyyyMMdd", CultureInfo.InvariantCulture);

        Console.WriteLine(installDate);
    }

나는 그렇게 할 API에 대해 잘 모르지만 레지스트리에서 직접 값을 읽으려고 시도 할 수 있습니다. 다음 키를 확인하십시오.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{product-id}
    InstallDate = 20081004

UNINSTALL 키 아래에 저장된 정보는 제어판 -> 프로그램 추가 또는 제거에 표시됩니다.

레지스트리의 installDate 키는 항상 MSI를 통해 프로그램이 설치되지 않은 경우 (예 : Adobe Flash Player 플러그인, 데몬 도구, 7-zip, Picasa, Teamviewer, Mozilla Firefox).

또 다른 "적절한"방법은 "Sure"에 대해 알고있는 일부 파일의 생성 날짜를 설치자가 추가하는 것입니다. 필자의 경우 "Unins000.exe"입니다.이 경우 Inno Setup v5에 의해 생성됩니다. Pinvoke는 관련이 없지만 FileInfo가 존재하고 창조 시간 속성을 사용합니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top