11

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

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

4

5 回答 5

12

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

以下代码适用于版本。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;
    }
}
于 2014-11-14T15:08:16.303 回答
10

这就是我正在使用的。

    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;
    }
于 2013-06-20T09:21:47.727 回答
9

对于 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已经很好地解释了它!祝你好运!

于 2013-06-18T10:49:59.167 回答
4

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

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

可能的位置:

  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\TeamViewer\Version[版本]
  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\TeamViewer
  • HKEY_LOCAL_MACHINE\SOFTWARE\TeamViewer\Version[版本]
  • HKEY_LOCAL_MACHINE\SOFTWARE\TeamViewer\Version
于 2016-07-08T13:26:59.420 回答
-1
public static string TvId()
{
    return Microsoft.Win32.Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\TeamViewer\\Version6", "ClientID", "FAILED").ToString();
}
于 2017-06-22T08:44:39.573 回答