2013-06-18 7 views
10

मैं एक प्रोग्राम बना रहा हूं जो उपयोगकर्ता गतिविधि को लॉग करता है, और मैं एक टीमव्यूवर आईडी प्राप्त करने और इसे लॉग में भेजने में सक्षम होना चाहता हूं, मुझे पता है कि उस जानकारी को एक चर को निर्दिष्ट करके लॉग को जानकारी कैसे भेजनी है हालांकि, मुझे यकीन नहीं है कि एक चरवाहक आईडी के लिए एक टीमव्यूवर आईडी कैसे पास करें और इस पर कुछ मदद चाहिए।क्या सी # में Teamviewer आईडी खोजने का कोई तरीका है?

किसी भी और सभी मदद की सराहना की जाएगी :)

+0

स्पष्ट रूप से ये पुराने हैं लेकिन शुरू करने के लिए एक अच्छी जगह है, 'वीबीएससीआरआईपीटी' - http://www.sole.dk/vbscript-to-show-current-teamviewer-id-and-save-to-text-file/ 'सी #' - http://hintdesk.com/how-to-get-id-and-pass-of-teamviewer-programatically/ – CodeCamper

+0

त्वरित प्रतिक्रिया के लिए धन्यवाद, हालांकि मैंने इस पर शोध करते समय इन लिंक को देखा है मुद्दा, मैं सी # में एक नौसिखिया हूं और एक स्पष्ट स्पष्टीकरण की उम्मीद कर रहा था –

उत्तर

8

TeamViewer 8 के लिए Windows 8 में TeamViewer आईडी उस पर यहाँ से \ Wow6432Node \ TeamViewer \ Version8 \ ClientID HKEY_LOCAL_MACHINE \ SOFTWARE में संग्रहित है

बस है सी # में उस रजिस्ट्री कुंजी को पढ़ने का मामला और उसके बाद जो भी आप चाहते हैं उसे करें, यदि आवश्यकता हो तो मैं रजिस्ट्री पढ़ने के लिए कोड प्रदान करूंगा :) लेकिन http://www.codeproject.com/Articles/3389/Read-write-and-delete-from-registry-with-C यह वास्तव में पहले से ही अच्छी तरह से बताता है! शुभकामनाएँ!

+1

यह बिल्कुल शानदार है! शानदार जवाब बहुत बहुत धन्यवाद: डी –

+1

आपका बहुत स्वागत है :) – Maritim

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; 
    } 
+0

यह भी अच्छी तरह से काम किया = डी धन्यवाद! –

+1

रजिस्ट्री कुंजी डिस्पोजेबल हैं इसलिए एक उपयोग कथन – NiKiZe

8

संस्करण 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; 
    } 
} 
+1

रजिस्ट्री कुंजियां डिस्पोजेबल हैं, इसलिए एक उपयोग कथन – NiKiZe

+0

में होना चाहिए, मुझे लगता है कि मेरी विधि रिसाव नहीं है। लेकिन आम तौर पर बोलते हुए, हां, आईडीस्पोजेबल ऑब्जेक्ट्स को ठीक से संभाला जाना चाहिए। –

1

स्वीकार कर लिया समाधान कुछ मामलों में सही हो सकता है, लेकिन ClientID रजिस्ट्री में अन्य स्थानों में स्थित हो सकता है।

  1. यह इस बात पर निर्भर करता है कि आप 64-बिट्स ओएस का उपयोग कर रहे हैं या नहीं। 64-बिट्स ओएस पर आपको \ Wow6432 \ को शामिल करने की आवश्यकता है।
  2. कभी-कभी रजिस्ट्री स्थान किसी संस्करण (उदाहरण के लिए \ Version9) के साथ समाप्त होता है, लेकिन मैंने ऐसे मामलों को देखा है जहां यह नहीं है।

संभावित स्थानों:

  • HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ TeamViewer \ संस्करण [संस्करण]
  • HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ TeamViewer
  • HKEY_LOCAL_MACHINE \ SOFTWARE \ TeamViewer \ संस्करण [संस्करण]
  • HKEY_LOCAL_MACHINE \ SOFTWARE \ TeamViewer \ संस्करण
0
public static string TvId() 
{ 
    return Microsoft.Win32.Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\TeamViewer\\Version6", "ClientID", "FAILED").ToString(); 
} 
+0

यह उत्तर अधिक संक्षिप्त हो सकता है, लेकिन यह कई मामलों में विफल हो जाएगा, यह एक अच्छा समाधान नहीं है। उदाहरण के लिए इगोर गोरजैंक या देवसोफ्ट से जवाब देखें। – jv42

+0

अच्छा, यह छोटा है, और यह प्रोग्रामर को सही संस्करण पथ की ज़िम्मेदारी छोड़ देता है। – ateacv

+0

कुछ विशिष्ट उपयोग मामलों के लिए पर्याप्त मेला पर्याप्त है, यह अभी भी सहायक हो सकता है। – jv42

संबंधित मुद्दे