用VC禁用netbios

类别:编程语言 点击:0 评论:0 推荐:

/*
Code by tangyue
Mail [email protected]
Msn [email protected]
*/

#include <stdio.h>
#include <tchar.h>
#include <windows.h>
#include <winreg.h>

#define MY_BUFSIZE 256

void Usage (void);
void ShowVersion(void);

int main (int argc, char *argv[])
{
 int n;
 HKEY hKEY;
 DWORD Number=0;
 DWORD MaxSubKeyLen;
 DWORD i;
 FILETIME ftLastWriteTime;
 
 char data_Set[MY_BUFSIZE];
 char data_Set1[MY_BUFSIZE];
 
 DWORD Maxlen = 256;
 DWORD dwBufLen = MY_BUFSIZE;
 HKEY hKeyAdapter,hKeyNetBios;
 CHAR achKey[MY_BUFSIZE];
 TCHAR adapterNameGet[256];
 DWORD cbData=256;
 long lret;
 
 for (n=1;n<argc;n++) {
  if (argv[n][0] == '-') {
   switch(argv[n][1]) {
    case '?':Usage();
    break;

    case 'v':ShowVersion();
   }
  }
 }

 if(lret = ERROR_SUCCESS != RegOpenKeyEx( HKEY_LOCAL_MACHINE,("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\NetworkCards"),0, KEY_READ,&hKEY)){
  fprintf(stderr,"error!\n");
  exit(1);
 }
 
 if(ERROR_SUCCESS!= RegQueryInfoKey( hKEY,NULL,NULL,NULL, &Number,&MaxSubKeyLen, NULL, NULL,NULL,NULL, NULL,NULL)){
  RegCloseKey(hKEY);
  fprintf(stderr,"error\n");
  exit(1);
 }
 
 DWORD dwIndex=0,lpcbname=100;
 long ret;
for (i = 0; i < Number; i++){
 
  ZeroMemory(achKey,100);
  Maxlen = 256;
  cbData = 256;
  
  ret = RegEnumKeyEx(hKEY,i,achKey,&Maxlen,NULL,NULL,NULL,&ftLastWriteTime); 
 
  sprintf((char *)data_Set,"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\NetworkCards\\%s",achKey);
  RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set,0, KEY_READ,&hKeyAdapter);
  
  RegQueryValueEx(hKeyAdapter, "ServiceName", NULL,NULL, (LPBYTE)adapterNameGet, &cbData);
  
  ZeroMemory(achKey,100);
  Maxlen = 256;
  cbData = 256;
  
  sprintf((char *)data_Set1,"SYSTEM\\CurrentControlSet\\Services\\NetBT\\Parameters\\Interfaces\\Tcpip_%s",adapterNameGet);
  if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set1,0, KEY_WRITE,&hKeyNetBios)){
   fprintf(stderr,"error\n");
   
  }
  
  DWORD  dwData;
  dwData = 2;
  if (RegSetValueEx(hKeyNetBios,      // subkey handle
            "NetbiosOptions",  // value name
            0,                 // must be zero
            REG_DWORD,         // value type
            (LPBYTE) &dwData,  // pointer to value data
            sizeof(DWORD)))    // length of value data
   
   fprintf(stderr,"Could not set the supported types.\n");
  
  RegCloseKey(hKeyAdapter);
  RegCloseKey(hKeyNetBios);  
  
 }
 

 RegCloseKey(hKEY);  
 
 printf("\nNetBios had Disabled!\n");
 return 0;
}

void Usage (void) {
 fprintf(stderr,
 "Usage: netbios [-?] [-v] \n"
 "-?:show help\n"
 "-v:show version\n"
);
 exit(0);
}

void ShowVersion(void) {
 fprintf(stderr,
 "Win\tnetbios\tVer1.0.0\t2004.12.16\n"
 );
 exit(0);
}

本文地址:http://com.8s8s.com/it/it24357.htm