根据注册表路径获取主键值和子键值 1.获取主键值 HKEY GetMainKeyName(char SubKey[MAX_PATH]) { HKEY hMainKey; char *delim="//"; char *p; p = strtok(SubKey,delim); if(strcmp("HKCU",p) == 0) hMainKey = HKEY_CURRENT_USER; else if(strcmp("HKLM",p) == 0) hMainKey = HKEY_LOCAL_MACHINE; else if(strcmp("HKEY_USERS",p) == 0) hMainKey = HKEY_USERS; else if(strcmp("HKCR",p) == 0) hMainKey = HKEY_CLASSES_ROOT; else { //MessageBox(NULL,L"不是可用根键!", L"Notice", MB_OK); const char * notice = "不是可用根键!"; log(notice, strlen(notice)); return NULL; } return hMainKey; } 2.获取子键值 wchar_t * GetSubKeyName(char SubKey[MAX_PATH]) { char value[MAX_PATH] = {0}; sprintf(value, "%s", SubKey); char * key; key = strchr(value,'//'); wchar_t * subKey = short2wide(key+1); return subKey; } 主函数 //截取字符串 #define MAX_PATH 260 #include <iostream> using namespace std; int main() { char sentence[100]="HKEY_CURRENT_USER//Software//Microsoft"; char ss[MAX_PATH]= ""; strcpy(ss, sentence); /*char *tokenPtr=strtok(ss,"//"); while(tokenPtr!=NULL) { cout<<tokenPtr<<'/n'; tokenPtr=strtok(NULL," "); } cout<<"After strtok, sentence = "<<sentence<<endl; cout<<"After strtok, ss = "<<ss<<endl;*/ //char * s="012345678901234567890123456789"; char *p; p= strstr(sentence,"//");//第一次出现斜杠 printf("%s/n",p);//输出后面那段 cout<<"After strtok, sentence = "<<sentence<<endl; system("pause"); return 0; }