有一种方法可以在c#中找到Teamviewer ID吗?

本文关键字:Teamviewer ID 一种 方法 | 更新日期: 2023-09-27 18:18:47

我正在制作一个记录用户活动的程序,我希望能够获得一个Teamviewer ID并将其发送到日志,我知道如何通过将该信息分配给变量将信息发送到日志,但是我不确定如何将Teamviewer ID传递给所述变量,并希望对此提供一些帮助。

任何和所有的帮助将是感激的:)

有一种方法可以在c#中找到Teamviewer ID吗?

Version 10在注册表中的位置略有不同。

下面的代码与ver一起工作。10和更旧的版本。它还考虑了32位和64位操作系统之间的差异:

long GetTeamViewerId()
{
    try
    {
        string regPath = Environment.Is64BitOperatingSystem ? @"SOFTWARE'Wow6432Node'TeamViewer" : @"SOFTWARE'TeamViewer";
        RegistryKey key = Registry.LocalMachine.OpenSubKey(regPath);
        if (key == null)
            return 0;
        object clientId = key.GetValue("ClientID");
        if (clientId != null) //ver. 10
            return Convert.ToInt64(clientId);
        foreach (string subKeyName in key.GetSubKeyNames().Reverse()) //older versions
        {
            clientId = key.OpenSubKey(subKeyName).GetValue("ClientID");
            if (clientId != null)
                return Convert.ToInt64(clientId);
        }
        return 0;
    }
    catch (Exception e)
    {
        return 0;
    }
}

我就是这么用的

    public static string GetTeamviewerID()
    {
        var versions = new[] {"4", "5", "5.1", "6", "7", "8"}.Reverse().ToList(); //Reverse to get ClientID of newer version if possible
        foreach (var path in new[]{"SOFTWARE''TeamViewer","SOFTWARE''Wow6432Node''TeamViewer"})
        {
            if (Registry.LocalMachine.OpenSubKey(path) != null)
            {
                foreach (var version in versions)
                {
                    var subKey = string.Format("{0}''Version{1}", path, version);
                    if (Registry.LocalMachine.OpenSubKey(subKey) != null)
                    {
                        var clientID = Registry.LocalMachine.OpenSubKey(subKey).GetValue("ClientID");
                        if (clientID != null) //found it?
                        {
                            return Convert.ToInt32(clientID).ToString();
                        }
                    }
                }
            }
        }
        //Not found, return an empty string
        return string.Empty;
    }

对于Windows 8中的TeamViewer 8, TeamViewer ID存储在HKEY_LOCAL_MACHINE'SOFTWARE'Wow6432Node'TeamViewer'Version8'ClientID

从这里开始,它只是一个简单的问题,在c#中阅读注册表项,然后做任何你想要的,如果需要的话,我会提供注册表读取代码:)但是http://www.codeproject.com/Articles/3389/Read-write-and-delete-from-registry-with-C解释它真的很好了!祝你好运!

接受的解决方案在某些情况下可能是正确的,但是ClientID可以位于注册表的其他位置。

  1. 这取决于您是否使用64位操作系统。在64位操作系统上,您需要包含'Wow6432'.
  2. 有时注册表位置以版本结束(例如'Version9),但我见过它没有的情况。

可能的地点:

  • HKEY_LOCAL_MACHINE ' Wow6432Node ' TeamViewer ' '软件版本(版本)
  • HKEY_LOCAL_MACHINE ' SOFTWARE ' Wow6432Node ' TeamViewer
  • HKEY_LOCAL_MACHINE ' TeamViewer ' '软件版本(版本)
  • HKEY_LOCAL_MACHINE ' TeamViewer ' '软件版本
public static string TvId()
{
    return Microsoft.Win32.Registry.GetValue("HKEY_LOCAL_MACHINE''SOFTWARE''Wow6432Node''TeamViewer''Version6", "ClientID", "FAILED").ToString();
}