Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检测Win Svr 2003 x64上已安装的应用程序时出现问题_C#_Installation_Registry_Windows Server 2003_64 Bit - Fatal编程技术网

C# 检测Win Svr 2003 x64上已安装的应用程序时出现问题

C# 检测Win Svr 2003 x64上已安装的应用程序时出现问题,c#,installation,registry,windows-server-2003,64-bit,C#,Installation,Registry,Windows Server 2003,64 Bit,我有一个x86 Windows应用程序,它由两个服务和一个客户端ui组成 由于说服各种MSI正确升级的各种问题,安装过程现在由向导式程序控制,该程序检测当前安装的内容,并通过存储用户的当前设置、卸载现有软件和安装新版本来处理升级 基本过程是: 查看HKLM\Software\Classes\Installer\Products 在其中的GUID键中循环查找ProductName=“(我的应用程序名称)” 如果未找到,请从HKCU\Software\Microsoft\Installer\Pro

我有一个x86 Windows应用程序,它由两个服务和一个客户端ui组成

由于说服各种MSI正确升级的各种问题,安装过程现在由向导式程序控制,该程序检测当前安装的内容,并通过存储用户的当前设置、卸载现有软件和安装新版本来处理升级

基本过程是:

  • 查看
    HKLM\Software\Classes\Installer\Products
  • 在其中的GUID键中循环查找
    ProductName=“(我的应用程序名称)”
  • 如果未找到,请从
    HKCU\Software\Microsoft\Installer\Products
    开始重复
  • 如果找到,请向用户提供升级(如前所述),否则进行全新安装(即向导会向用户询问各种问题)
现在,这在你提到的几乎所有Windows平台上都能正常工作,从XP到Windows。它仅在Windows Server 2003 x64上失败,因为向导未检测到现有安装-尽管存在与我测试的任何其他平台上完全相同的注册表项

在以下时间可以:

  • XP x32
  • Vista x32、x64
  • 服务器2003 x86
  • 服务器2008 x86,x64
  • 服务器2008 R2 x64
  • Windows 7 x86、x64

似乎只有Server 2003 x64出现了此问题。

确定。终于弄明白发生了什么事

该向导编译为x86,我认为注册表虚拟化正在成为阻碍。 x86向导在所有其他WinO(32位和64位)上都能正常工作,但在服务器2003x64上却不能。我猜WI创建的reg条目对x86进程是隐藏的

作为MSIL重新编译意味着它现在可以在任何地方工作,包括服务器2003x64