관리 코드에서 설치 날짜를 얻으십시오
-
03-07-2019 - |
문제
제품 안내서를 사용하여 응용 프로그램의 설치 날짜를 검색하는 관리 된 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가 존재하고 창조 시간 속성을 사용합니다!
제휴하지 않습니다 StackOverflow