【问题标题】:Check if Skype is installed检查是否安装了 Skype
【发布时间】:2012-03-28 20:56:34
【问题描述】:

我尝试修复一种方法来检查用户是否在他的计算机上安装了 Skype。这是我修复/想出的:

  1. 我的电脑上安装了 Skype
  2. 我已经修复了一个循环遍历所有已安装程序的方法
  3. 我的方法找到了我安装的程序,但它无法找到Skype,虽然它已安装。但我的方法会找到同一目录中的其他程序。

有人对如何检查计算机上是否安装了 Skype 有任何想法吗?

我使用的方法和这个类似:

Method to loop through all installed programs

【问题讨论】:

    标签: c# skype


    【解决方案1】:

    只需使用注册表:

    using Microsoft.Win32;
    
        //Function uses Microsoft.Win32 to check registry value of
        //HKEY_CURRENT_USERSoftwareSkypePhoneSkypePath and returns false if
        //the key is null
        private bool isSkypeUser()
        {
            RegistryKey skype = Registry.CurrentUser.OpenSubKey(@"SoftwareSkypePhone");
    
            if (skype != null && skype.GetValue("SkypePath") != null)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    

    http://brcline.com/blog/?tag=skype

    编辑:

    一个肮脏的解决方法是循环通过 StartMenu 文件夹寻找 Skype 快捷方式或文件夹。您必须使用以下 SpecialFolder 枚举:

    var startMenuPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonPrograms)
    

    希望对你有帮助!

    【讨论】:

    • 这可能有效。只需确保在卸载后删除注册表值即可。否则你可能会得到误报。
    • 我已经尝试过这种方法,但是那个方法对我不起作用。我真的知道为什么...@ssg我如何检查注册表值是否仍然存在?
    • 从您的计算机上卸载 Skype 并查看该值是否保留或被删除。如果它仍然存在,该方法将不起作用。您可以尝试与 Skype 相关的其他注册表项。您可以使用 Sysinternals 的 ProcMon 监控注册表活动。
    • @AwmaN:来自上面的链接:"要检查是否安装了 Skype,请在 regedit 中检查以下键是否存在:HKCUSoftwareSkypePhone, SkypePath。该键指向 Skype 的位置。 exe文件。如果此密钥不存在,请检查HKLMSoftwareSkypePhone,SkypePath密钥是否存在。如果HKCU密钥不存在但HKLM密钥存在,则Skype已从管理员帐户安装但未从当前帐户使用。 "
    • 如果上述方法对您不起作用,您可能还想尝试检查以下键:HKEY_LOCAL_MACHINE\SOFTWARE\Classes\skype\shell\open\command 但这只会告诉您是否Skype已安装在机器上。
    猜你喜欢
    • 2021-11-23
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2010-11-06
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多