悬赏缉拿

冰块有这么个困难需要解决:
 
在我们的工作中会用到好几台机器,有的机器在控制域(Domain)中,有的在工作组(workgroup)中。而在测试的时候可能有时需要在域中,有时又需要在工作组中。那么,能不能写一个软件,自动检测当前的机器是在工作组中还是在域中呢?
 
要求:
           1。用C#、C++、VBS或Java写成程序。
           2。运行该程序,自动检测出是在工作组中还是在域中,并给出提示。
           3。通用性前,适合各种情况。
 
谁有想法或是建议请一定跟大家分享一下!最好能给出程序代码,大家一起来分析一下。
 
Thanks!
 

3 Replies to “悬赏缉拿”

  1. 这是C#版本的,通过获得注册表的键值来得到网络状态:
    public void networkMode()        {            string retval = null;            try            {                string strSubKey = @"SYSTEM\ControlSet001\Services\Tcpip\Parameters";                RegistryKey regKey = Registry.LocalMachine.OpenSubKey(strSubKey, true);                if (regKey != null)                {                    retval = regKey.GetValue("Domain").ToString().ToLower();                }                if (retval != "")                    MessageBox.Show("This machine is a member of this domain: " + retval);                else                    MessageBox.Show("This machine works under WORK GROUP mode.");            }            catch (Exception ex)            {                MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace);            }         }
     
    这是JAVA版本的,由于JAVA自带的包对windows注册表操作有很大局限性,所以采用dos命令导出注册表的方式,相对比较简单,但效率有点低…
    public void networkMode()   {    try    {        Runtime.getRuntime().exec("regedit /ea c:\\temp.txt HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Services\\Tcpip\\Parameters");        Thread tr = new Thread();        tr.sleep(2000);        File f = new File("c:\\temp.txt");        FileReader fr = new FileReader(f);           BufferedReader br = new BufferedReader(fr);           String st =  br.readLine();           while( (st = br.readLine()) !=null)           {            if(st.length()>7 && st.substring(1,7).equals("Domain") )                  break;           }           br.close();           fr.close();           f.deleteOnExit();           if(st.equals("\"Domain\"=\"\""))     {         JOptionPane.showMessageDialog(null,"This machine works under WORK GROUP mode","Network Detect",0);         return;     }           else           {            st = st.substring(9);            JOptionPane.showMessageDialog(null,"This machine is a member of this domain: "+st,"Network Detect",0);           }    }    catch(Exception e)  {   System.err.println(e);  } }