// Creation du SSH Handler void CreateSSHHandler() { char path[1024], buffer[1024] ; GetModuleFileName( NULL, (LPTSTR)path, 1024 ) ; // Telnet RegTestOrCreate( HKEY_CLASSES_ROOT, "telnet", "", "URL:Telnet Protocol") ; RegTestOrCreateDWORD( HKEY_CLASSES_ROOT, "telnet", "EditFlags", 2) ; RegTestOrCreate( HKEY_CLASSES_ROOT, "telnet", "FriendlyTypeName", "@ieframe.dll,-907") ; RegTestOrCreate( HKEY_CLASSES_ROOT, "telnet", "URL Protocol", "") ; RegTestOrCreateDWORD( HKEY_CLASSES_ROOT, "telnet", "BrowserFlags", 8) ; sprintf(buffer, "%s,0", path ) ; RegTestOrCreate( HKEY_CLASSES_ROOT, "telnet\\DefaultIcon", "", buffer ) ; RegTestOrCreate( HKEY_CLASSES_ROOT, "telnet\\shell", "", "") ; sprintf(buffer, "\"%s\" %%1", path ) ; RegTestOrCreate( HKEY_CLASSES_ROOT, "telnet\\shell\\open\\command", "", buffer ) ; // SSH RegTestOrCreate( HKEY_CLASSES_ROOT, "ssh", "", "URL:SSH Protocol") ; RegTestOrCreateDWORD( HKEY_CLASSES_ROOT, "ssh", "EditFlags", 2) ; RegTestOrCreate( HKEY_CLASSES_ROOT, "ssh", "FriendlyTypeName", "@ieframe.dll,-907") ; RegTestOrCreate( HKEY_CLASSES_ROOT, "ssh", "URL Protocol", "") ; RegTestOrCreateDWORD( HKEY_CLASSES_ROOT, "ssh", "BrowserFlags", 8) ; sprintf(buffer, "%s,0", path ) ; RegTestOrCreate( HKEY_CLASSES_ROOT, "ssh\\DefaultIcon", "", buffer ) ; RegTestOrCreate( HKEY_CLASSES_ROOT, "ssh\\shell", "", "") ; sprintf(buffer, "\"%s\" %%1", path ) ; RegTestOrCreate( HKEY_CLASSES_ROOT, "ssh\\shell\\open\\command", "", buffer ) ; // PuTTY RegTestOrCreate( HKEY_CLASSES_ROOT, "putty", "", "URL:PuTTY Protocol") ; RegTestOrCreateDWORD( HKEY_CLASSES_ROOT, "putty", "EditFlags", 2) ; RegTestOrCreate( HKEY_CLASSES_ROOT, "putty", "FriendlyTypeName", "@ieframe.dll,-907") ; RegTestOrCreate( HKEY_CLASSES_ROOT, "putty", "URL Protocol", "") ; RegTestOrCreateDWORD( HKEY_CLASSES_ROOT, "putty", "BrowserFlags", 8) ; sprintf(buffer, "%s,0", path ) ; RegTestOrCreate( HKEY_CLASSES_ROOT, "putty\\DefaultIcon", "", buffer ) ; RegTestOrCreate( HKEY_CLASSES_ROOT, "putty\\shell", "", "") ; sprintf(buffer, "\"%s\" -load \"%%1\"", path ) ; RegTestOrCreate( HKEY_CLASSES_ROOT, "putty\\shell\\open\\command", "", buffer ) ; }
// Inititalise la clé de registre Launcher avec les sessions enregistrées void InitLauncherRegistry( void ) { HKEY hKey ; char buffer[MAX_VALUE_NAME] ; int i; if( (IniFileFlag == SAVEMODE_REG)||(IniFileFlag == SAVEMODE_FILE) ) { TCHAR achValue[MAX_VALUE_NAME], folder[MAX_VALUE_NAME], achClass[MAX_PATH] = TEXT(""); DWORD cchClassName=MAX_PATH,cSubKeys=0,cbMaxSubKey,cchMaxClass; DWORD cValues,cchMaxValue,cbMaxValueData,cbSecurityDescriptor; FILETIME ftLastWriteTime; sprintf( buffer, "%s\\Launcher", PUTTY_REG_POS ) ; RegDelTree (HKEY_CURRENT_USER, buffer ) ; RegTestOrCreate( HKEY_CURRENT_USER, buffer, NULL, NULL ) ; sprintf( buffer, "%s\\Sessions", PUTTY_REG_POS ) ; if( RegOpenKeyEx( HKEY_CURRENT_USER, buffer, 0, KEY_READ, &hKey) != ERROR_SUCCESS ) return ; RegQueryInfoKey(hKey,achClass,&cchClassName,NULL,&cSubKeys,&cbMaxSubKey,&cchMaxClass,&cValues,&cchMaxValue,&cbMaxValueData,&cbSecurityDescriptor,&ftLastWriteTime); if( cSubKeys>0 ) for (i=0; i<cSubKeys; i++) { DWORD cchValue = MAX_VALUE_NAME; DWORD dwDataSize=4096 ; char lpData[4096] ; dwDataSize = 4096 ; achValue[0] = '\0'; if( RegEnumKeyEx(hKey, i, lpData, &cchValue, NULL, NULL, NULL, &ftLastWriteTime) == ERROR_SUCCESS ) { sprintf( buffer,"%s\\Sessions\\%s", TEXT(PUTTY_REG_POS), lpData ) ; if( !GetValueData(HKEY_CURRENT_USER, buffer, "Folder", folder ) ) { strcpy( folder, "Default" ) ; } CleanFolderName( folder ) ; if( !strcmp( folder, "Default" ) || (strlen(folder)<=0) ) sprintf( buffer, "%s\\Launcher", TEXT(PUTTY_REG_POS) ) ; else sprintf( buffer, "%s\\Launcher\\%s", TEXT(PUTTY_REG_POS), folder ) ; strcpy( folder, "" ) ; unmungestr( lpData, folder, MAX_VALUE_NAME ) ; if( strlen(folder) > 0 ) RegTestOrCreate( HKEY_CURRENT_USER, buffer, folder, folder ) ; } } RegCloseKey( hKey ) ; } else if( (IniFileFlag == SAVEMODE_DIR)&&(DirectoryBrowseFlag==0) ) { char fullpath[MAX_VALUE_NAME], folder[MAX_VALUE_NAME] ; DIR * dir ; struct dirent * de ; FILE * fp ; sprintf( fullpath, "%s\\Launcher", ConfigDirectory ) ; DelDir( fullpath ) ; MakeDir( fullpath ) ; sprintf( fullpath, "%s\\Sessions", ConfigDirectory ) ; if( (dir=opendir(fullpath)) != NULL ) { while( (de=readdir(dir)) != NULL ) if( strcmp(de->d_name,".") && strcmp(de->d_name,"..") ) { sprintf( fullpath, "%s\\Sessions\\%s", ConfigDirectory, de->d_name ) ; if( !(GetFileAttributes( fullpath ) & FILE_ATTRIBUTE_DIRECTORY) ) { strcpy( folder, "" ) ; unmungestr( de->d_name, buffer, MAX_VALUE_NAME) ; GetSessionFolderName( buffer, folder ) ; CleanFolderName( folder ) ; sprintf( buffer, "%s\\Launcher\\%s", ConfigDirectory, folder ) ; if( strcmp(folder,"Default") ) { MakeDir( buffer ) ; sprintf( buffer, "%s\\Launcher\\%s\\%s", ConfigDirectory, folder, de->d_name ) ; } else sprintf( buffer, "%s\\Launcher\\%s", ConfigDirectory, de->d_name ) ; if( (fp=fopen(buffer,"wb")) != NULL ) { unmungestr( de->d_name, buffer, MAX_VALUE_NAME) ; fprintf( fp, "%s\\%s\\", buffer, buffer ) ; fclose( fp ) ; } } } closedir(dir) ; } } else if( (IniFileFlag == SAVEMODE_DIR)&&DirectoryBrowseFlag ) { char fullpath[MAX_VALUE_NAME] ; sprintf( fullpath, "%s\\Launcher", ConfigDirectory ) ; DelDir( fullpath ) ; MakeDir( fullpath ) ; InitLauncherDir( "" ) ; } }