Index: build.h =================================================================== RCS file: /usr/local/cvs/cvsnt/build.h,v retrieving revision 1.1.2.173.4.320.2.356 diff -c -r1.1.2.173.4.320.2.356 build.h *** build.h 5 Aug 2024 22:18:01 -0000 1.1.2.173.4.320.2.356 --- build.h 6 Aug 2024 02:15:44 -0000 *************** *** 1 **** ! #define CVSNT_PRODUCT_BUILD 8971 --- 1 ---- ! #define CVSNT_PRODUCT_BUILD 8972 Index: version_fu.h =================================================================== RCS file: /usr/local/cvs/cvsnt/version_fu.h,v retrieving revision 1.1.2.6.8.1.6.6 diff -c -r1.1.2.6.8.1.6.6 version_fu.h *** version_fu.h 6 Jul 2024 10:20:37 -0000 1.1.2.6.8.1.6.6 --- version_fu.h 6 Aug 2024 02:02:28 -0000 *************** *** 250,254 **** --- 250,255 ---- #define CVSNT_PRODUCTVERSION_SHORTS PP_STRINGIZE(CVSNT_PRODUCT_MAJOR.CVSNT_PRODUCT_MINOR.CVSNT_PRODUCT_PATCHLEVELS.CVSNT_PRODUCT_BUILD) #define CVSNT_FILEVERSION CVSNT_PRODUCT_MAJOR,CVSNT_PRODUCT_MINOR,CVSNT_PRODUCT_PATCHLEVEL,CVSNT_PRODUCT_BUILD #define CVSNT_PRODUCTVERSION_YEAR PP_STRINGIZE(CVSNT_PRODUCT_YEAR) " Build " PP_STRINGIZE(CVSNT_PRODUCT_BUILD) + #define CVSNT_PRODUCTVERSION_TYEAR PP_TSTRINGIZE(CVSNT_PRODUCT_YEAR) _T(" Build ") PP_TSTRINGIZE(CVSNT_PRODUCT_BUILD) #define CVSNT_PRODUCT_BUILD_STR " Build " PP_STRINGIZE(CVSNT_PRODUCT_BUILD) #endif ? Debug ? Release ? wiztesting/Release ? wiztime/Release Index: wizcfg/cvsdiag.cpp =================================================================== RCS file: /scotty/wizard/wizcfg/cvsdiag.cpp,v retrieving revision 1.1.2.8 diff -c -r1.1.2.8 cvsdiag.cpp *** wizcfg/cvsdiag.cpp 1 Feb 2024 23:25:26 -0000 1.1.2.8 --- wizcfg/cvsdiag.cpp 6 Aug 2024 10:47:25 -0000 *************** *** 38,51 **** --- 38,60 ---- #endif typedef struct user_name_struct { + #ifdef _UNICODE std::wstring fullname; std::list allnames; + #else + std::string fullname; + std::list allnames; + #endif unsigned count; user_name_struct() : count(0) { } } user_name_t; + #ifdef _UNICODE typedef std::map user_list_t; + #else + typedef std::map user_list_t; + #endif int win32_global_codepage = CP_ACP; /* Not all systems set the same error code on a non-existent-file *************** *** 611,618 **** } /*** above this line - code required for crash dump handling, particularly: copy and zip ***/ /*******************************************************************************************/ ! /********* below this line - code required cvsdiag, should be the same as in CVSNT *********/ #define WINROOT "SOFTWARE\\Microsoft\\%s\\CurrentVersion" #define WINORG "RegisteredOrganization" --- 620,631 ---- } /*** above this line - code required for crash dump handling, particularly: copy and zip ***/ + /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ + /*******************************************************************************************/ /*******************************************************************************************/ ! /*++++++++ below this line - code required cvsdiag, should be the same as in CVSNT ++++++++*/ ! ! //#endif #define WINROOT "SOFTWARE\\Microsoft\\%s\\CurrentVersion" #define WINORG "RegisteredOrganization" *************** *** 623,628 **** --- 636,643 ---- void GetKeyM(LPCTSTR inkey, LPCTSTR strname, LPTSTR strvalue, size_t sizeofvalin); void GetKeyD(LPCTSTR inkey, LPCTSTR strname, LPDWORD dwvalue); + void GetOsVersion(LPTSTR osv, LPTSTR servicepack, LPTSTR osvxtra, DWORD& dwMajor, DWORD& dwMinor, DWORD& dwBuildNo, DWORD& dw64, LPTSTR org, size_t orgsiz, LPTSTR owner, size_t ownersiz, LPTSTR osuser, size_t osusersiz, LPTSTR oscomputer, size_t oscomputersiz, LPTSTR oscmdln); + int print_logged_in_users(FILE *output) { HKEY g_hLicenseKey; *************** *** 650,656 **** --- 665,674 ---- bufLen=sizeof(buf); if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,_T("Software\\CVS\\License"),0,KEY_READ,&g_hLicenseKey)) + { + _ftprintf(output,_T("** cannot list logged in users/no key **\n")); return 0; + } for(DWORD dwIndex=0; dwIndex>=0; dwIndex++) { *************** *** 676,686 **** --- 694,710 ---- RegCloseKey(g_hLicenseKey); + _ftprintf(output,_T("Logged in users: ** start **\n")); for(user_list_t::const_iterator i = list_of_users.begin(); i!=list_of_users.end(); ++i) { logged_in_users++; + #ifdef _UNICODE std::wstring allnames; for (std::list::const_iterator it = i->second.allnames.begin(); it != i->second.allnames.end(); ++it){ + #else + std::string allnames; + for (std::list::const_iterator it = i->second.allnames.begin(); it != i->second.allnames.end(); ++it){ + #endif allnames+=*it; allnames+=_T(","); } *************** *** 689,694 **** --- 713,719 ---- allnames[allnames.length()-1]='\0'; _ftprintf(output,_T("User %d: %s (count:%u; list: %s)\n"),logged_in_users,i->first.c_str(),i->second.count,allnames.c_str()); } + _ftprintf(output,_T("** end **")); return logged_in_users; } *************** *** 1453,1469 **** LPTSTR get_os_version() { ! static TCHAR osv[256]; DWORD dwMajor, dwMinor, dwBuildNo, dw64; ! TCHAR os1[512],osvxtra1[512],servicepack1[256],osuser1[512],oscomputer1[512],owner1[512],organisation1[512],cmdln1[1024]; servicepack1[0]='\0'; osvxtra1[0]='\0'; os1[0]='\0'; ! GetOsVersion(os1, servicepack1, osvxtra1, dwMajor, dwMinor, dwBuildNo, dw64, owner1, sizeof(owner1), organisation1, sizeof(organisation1), osuser1, sizeof(osuser1), oscomputer1, sizeof(oscomputer1), cmdln1); _stprintf(os1+_tcslen(os1),osvxtra1); if(servicepack1[0]!='\0') _stprintf(os1+_tcslen(os1),_T(" (%s)"),servicepack1); ! return osv; } // From MSDN --- 1478,1494 ---- LPTSTR get_os_version() { ! static TCHAR os1[512]; DWORD dwMajor, dwMinor, dwBuildNo, dw64; ! TCHAR osvxtra1[512],servicepack1[256],osuser1[512],oscomputer1[512],owner1[512],organisation1[512],cmdln1[1024]; servicepack1[0]='\0'; osvxtra1[0]='\0'; os1[0]='\0'; ! GetOsVersion(os1, servicepack1, osvxtra1, dwMajor, dwMinor, dwBuildNo, dw64, organisation1, sizeof(organisation1), owner1, sizeof(owner1), osuser1, sizeof(osuser1), oscomputer1, sizeof(oscomputer1), cmdln1); _stprintf(os1+_tcslen(os1),osvxtra1); if(servicepack1[0]!='\0') _stprintf(os1+_tcslen(os1),_T(" (%s)"),servicepack1); ! return os1; } // From MSDN *************** *** 3898,3909 **** //LPVOID errbuf; //char conv_str[8192]; #endif LPTSTR yn[] = { _T("No"), _T("Yes"), _T("Unknown") }; _ftprintf(output,_T("CRASH Diagnostic output\n")); _ftprintf(output,_T("-----------------------\n")); _ftprintf(output,_T("\n")); ! _ftprintf(output,_T("Server version: ") CVSNT_PRODUCTVERSION_TSTRING _T("\n")); _ftprintf(output,_T("OS Version: %s\n"),get_os_version()); #ifdef __GNUC__ #ifndef __GNUC_PATCHLEVEL__ --- 3923,3936 ---- //LPVOID errbuf; //char conv_str[8192]; #endif + short repcount=0; + int sslver=0, sslauth=0; LPTSTR yn[] = { _T("No"), _T("Yes"), _T("Unknown") }; _ftprintf(output,_T("CRASH Diagnostic output\n")); _ftprintf(output,_T("-----------------------\n")); _ftprintf(output,_T("\n")); ! _ftprintf(output,_T("Version: ") CVSNT_PRODUCTVERSION_TSTRING _T("\n")); _ftprintf(output,_T("OS Version: %s\n"),get_os_version()); #ifdef __GNUC__ #ifndef __GNUC_PATCHLEVEL__ *************** *** 3996,4004 **** _ftprintf(output,_T("\n")); _ftprintf(output,_T("SSERVER StrictChecking: %s\n"),get_reg_intx(_T("StrictChecking"),0)?_T("Yes"):_T("No")); _ftprintf(output,_T("SSERVER ClientKey: %s\n"),get_reg_string(_T("ClientKey"))); ! _ftprintf(output,_T("SSERVER CertificatesOnly: %s\n"),get_reg_intx(_T("CertificatesOnly"),0)?_T("Yes"):_T("No")); _ftprintf(output,_T("SSERVER CertificateFile: %s\n"),get_reg_string(_T("CertificateFile"))); _ftprintf(output,_T("SSERVER PrivateKeyFile: %s\n"),get_reg_string(_T("PrivateKeyFile"))); _ftprintf(output,_T("\n")); _ftprintf(output,_T("Legacy Trigger enabled: %s\n"),get_reg_subkey_int(_T("LegacyTrigger"),_T("Software\\CVS\\Plugins"),'1')=='1'?_T("Yes"):_T("No")); _ftprintf(output,_T("\n")); --- 4023,4070 ---- _ftprintf(output,_T("\n")); _ftprintf(output,_T("SSERVER StrictChecking: %s\n"),get_reg_intx(_T("StrictChecking"),0)?_T("Yes"):_T("No")); _ftprintf(output,_T("SSERVER ClientKey: %s\n"),get_reg_string(_T("ClientKey"))); ! sslauth = get_reg_intx(_T("CertificatesOnly"),0); ! switch (sslauth) ! { ! case 0: ! _ftprintf(output,_T("SSERVER CertificatesOnly: Authentication: Passwords Only\n")); ! break; ! case 1: ! _ftprintf(output,_T("SSERVER CertificatesOnly: Authentication: Certificates Only\n")); ! break; ! case 2: ! _ftprintf(output,_T("SSERVER CertificatesOnly: Authentication: Certificates And Passwords\n")); ! break; ! default: ! _ftprintf(output,_T("SSERVER CertificatesOnly: Configuration Error: %d\n"),sslauth); ! } _ftprintf(output,_T("SSERVER CertificateFile: %s\n"),get_reg_string(_T("CertificateFile"))); _ftprintf(output,_T("SSERVER PrivateKeyFile: %s\n"),get_reg_string(_T("PrivateKeyFile"))); + _ftprintf(output,_T("SSERVER SServerCiphers: \"%s\" (use \"%s\" if empty)\n"),get_reg_string(_T("SServerCiphers")),_T("HIGH:!EXPORT")); + _ftprintf(output,_T("SSERVER SSLQuiet: %s\n"),get_reg_intx(_T("SSLQuiet"),0)?_T("Yes"):_T("No")); + _ftprintf(output,_T("SSERVER EventLogCiphers: %s\n"),get_reg_intx(_T("EventLogCiphers"),0)?_T("Yes"):_T("No")); + sslver = get_reg_intx(_T("SSLVersion"),0); + switch (sslver) + { + case 0: + case 1: + _ftprintf(output,_T("SSERVER SSLVersion: TLS 1.1\n")); + break; + case 2: + _ftprintf(output,_T("SSERVER SSLVersion: TLS 1.2\n")); + break; + case 3: + _ftprintf(output,_T("SSERVER SSLVersion: TLS 1.3\n")); + break; + case 8: + _ftprintf(output,_T("SSERVER SSLVersion: SSL 3.0\n")); + break; + case 9: + _ftprintf(output,_T("SSERVER SSLVersion: TLS 1.0\n")); + break; + default: + _ftprintf(output,_T("SSERVER SSLVersion: Configuration Error: %d\n"),sslver); + } _ftprintf(output,_T("\n")); _ftprintf(output,_T("Legacy Trigger enabled: %s\n"),get_reg_subkey_int(_T("LegacyTrigger"),_T("Software\\CVS\\Plugins"),'1')=='1'?_T("Yes"):_T("No")); _ftprintf(output,_T("\n")); *************** *** 4074,4079 **** --- 4140,4147 ---- TCHAR repo_type[50]; TCHAR repo_remote_base[50]; TCHAR repo_remote_server[50]; + ++repcount; + _stprintf(repo_base,_T("Repository%d"),repok); _stprintf(repo_config,_T("Repository %d '%%s': "),repok); _stprintf(repo_name,_T("Repository%dName"),repok); *************** *** 4089,4094 **** --- 4157,4164 ---- // ignore (no key) or (no value) if (*repo_buf_res!='(') { + ++repcount; + _ftprintf(output,_T("***************************************************************\n")); _ftprintf(output,_T("Repository %d Path: %s\n"),repok,get_reg_string(repo_base)); _ftprintf(output,_T("Repository %d Name: %s\n"),repok,get_reg_string(repo_name)); _ftprintf(output,_T("Repository %d Default: %s\n"),repok,get_reg_intx(repo_default,0)?_T("Yes"):_T("No")); *************** *** 4102,4110 **** parse_config (output, repo_config, get_reg_string(repo_base), _T("shadow")); } } TCHAR myservername[1024]; ZeroMemory(myservername,sizeof(myservername)); ! _tcscpy(myservername,get_svr_string(_T("ServerName"))); _ftprintf(output,_T("Server Name (server): %s\n"),myservername); TCHAR tmpdir[1024]; int tempdir_size=1024; --- 4172,4185 ---- parse_config (output, repo_config, get_reg_string(repo_base), _T("shadow")); } } + if (repcount>0) + _ftprintf(output,_T("***************************************************************\n")); + else + _ftprintf(output,_T("Repository definitions not found after 100 tries!\n")); TCHAR myservername[1024]; ZeroMemory(myservername,sizeof(myservername)); ! _tcscpy(myservername,get_reg_string(_T("ServerName"))); ! //_tcscpy(myservername,get_svr_string(_T("ServerName"))); _ftprintf(output,_T("Server Name (server): %s\n"),myservername); TCHAR tmpdir[1024]; int tempdir_size=1024; *************** *** 4129,4135 **** _ftprintf(output,_T("ValTags: %s\n"),get_reg_intx(_T("ValTags"),0)?_T("Yes"):_T("No")); _ftprintf(output,_T("BranchAddUseSticky: %s\n"),get_reg_intx(_T("BranchAddUseSticky"),0)?_T("Yes"):_T("No")); _ftprintf(output,_T("Unicode Server: %s\n"),get_reg_intx(_T("UnicodeServer"),0)?_T("Yes"):_T("No")); ! _ftprintf(output,_T("Case Sensitive: %s\n"),get_reg_int(_T("CaseSensitive"))?_T("Yes"):_T("No")); _ftprintf(output,_T("Server listen port: %d\n"),get_reg_intx(_T("PServerPort"),get_mhreg_intx(_T("PServerPort"),2401))); _ftprintf(output,_T("Enable Unison: %d\n"),get_mhreg_intx(_T("EnableUnison"),get_reg_intx(_T("EnableUnison"),0))); _ftprintf(output,_T("Unison Port: %d\n"),get_mhreg_intx(_T("UnisonPort"),get_reg_intx(_T("UnisonPort"),22401))); --- 4204,4210 ---- _ftprintf(output,_T("ValTags: %s\n"),get_reg_intx(_T("ValTags"),0)?_T("Yes"):_T("No")); _ftprintf(output,_T("BranchAddUseSticky: %s\n"),get_reg_intx(_T("BranchAddUseSticky"),0)?_T("Yes"):_T("No")); _ftprintf(output,_T("Unicode Server: %s\n"),get_reg_intx(_T("UnicodeServer"),0)?_T("Yes"):_T("No")); ! _ftprintf(output,_T("Case Sensitive: %s\n"),get_reg_intx(_T("CaseSensitive"),0)?_T("Yes"):_T("No")); _ftprintf(output,_T("Server listen port: %d\n"),get_reg_intx(_T("PServerPort"),get_mhreg_intx(_T("PServerPort"),2401))); _ftprintf(output,_T("Enable Unison: %d\n"),get_mhreg_intx(_T("EnableUnison"),get_reg_intx(_T("EnableUnison"),0))); _ftprintf(output,_T("Unison Port: %d\n"),get_mhreg_intx(_T("UnisonPort"),get_reg_intx(_T("UnisonPort"),22401))); *************** *** 4394,4400 **** _ftprintf(stdout,_T("Platform does not have setlocale - locale override ignored\n")); #endif } ! } diag(diagfile,get_handle_details); fflush(diagfile); --- 4469,4478 ---- _ftprintf(stdout,_T("Platform does not have setlocale - locale override ignored\n")); #endif } ! } ! // ! // run main diag() function to get all the diagnostics. ! // diag(diagfile,get_handle_details); fflush(diagfile); Index: wizcfg/wizcfg.cpp =================================================================== RCS file: /scotty/wizard/wizcfg/wizcfg.cpp,v retrieving revision 1.1.2.12.2.92 diff -c -r1.1.2.12.2.92 wizcfg.cpp *** wizcfg/wizcfg.cpp 1 Feb 2024 09:25:47 -0000 1.1.2.12.2.92 --- wizcfg/wizcfg.cpp 6 Aug 2024 10:57:25 -0000 *************** *** 11,16 **** --- 11,17 ---- #include "stdafx.h" #include "cvsdiag.h" #include "Wizcfg.h" + #include "version.h" #ifdef _GENLIC #ifdef _DEBUG # pragma comment(lib, "comsuppwd.lib") *************** *** 164,169 **** --- 165,172 ---- m_bRightClick=false; m_bStartupAgent=false; m_bAutoStartAgent=false; + m_bCopyVisualStudioSLN=false; + m_nCopyVisualStudioSLN=0; m_bCrash=false; m_bDisplayInfo = false; m_bDisplayInfoRaw = false; *************** *** 202,207 **** --- 205,211 ---- m_szLicenseInfo = ""; m_szLicenseInfoRaw = ""; m_szPathToFile = ""; + m_szNewSuffix = ""; m_szUnknown = ""; } *************** *** 313,318 **** --- 317,329 ---- m_bAutoStartAgent=true; break; + // /4CopyVisualStudioSLN + case _T('4'): + m_bHelp=false; + m_bCopyVisualStudioSLN=true; + m_nCopyVisualStudioSLN=2; + break; + // /GetLicenseInfo case _T('g'): case _T('G'): *************** *** 491,496 **** --- 502,517 ---- if (m_bCopySetuid) m_szPathToFile += lpszParam; else + if (m_bCopyVisualStudioSLN) + { + if (m_nCopyVisualStudioSLN==2) + m_szPathToFile += lpszParam; + if (m_nCopyVisualStudioSLN==1) + m_szNewSuffix += lpszParam; + if (m_nCopyVisualStudioSLN>0) + --m_nCopyVisualStudioSLN; + } + else if (m_bStartupAgent) m_szPathToFile += lpszParam; else *************** *** 1613,1618 **** --- 1634,1679 ---- return; } + void CWizcfgApp::CopyVisualStudioSLN(CString & szPathToFile, CString & szNewSuffix) + { + cvs::string logmsg; + WCHAR szPathToFileReal[32768]; + + if (szPathToFile != "") + { + _tcscpy(szPathToFileReal,(const WCHAR *)szPathToFile); + if (szPathToFileReal[0]==L'\"') + { + szPathToFile.Remove(L'\"'); + _tcscpy(szPathToFileReal,(const WCHAR *)szPathToFile); + } + + // Exists? + DWORD fa = GetFileAttributes(szPathToFile); + if (fa == INVALID_FILE_ATTRIBUTES) + { + cvs::sprintf(logmsg,255,"CVS Suite Server Configurator Wizard - SLN does not exist \"%s\".",szPathToFileReal); + CServerIo::log(CServerIo::logError,logmsg.c_str()); + } + if (fa == FILE_ATTRIBUTE_DIRECTORY) + { + cvs::sprintf(logmsg,255,"CVS Suite Server Configurator Wizard - specify SLN filename, not directory \"%s\".",szPathToFileReal); + CServerIo::log(CServerIo::logError,logmsg.c_str()); + } + /*if (fa == FILE_ATTRIBUTE_READONLY) + { + cvs::sprintf(logmsg,255,"CVS Suite Server Configurator Wizard - SLN is read-only \"%s\".",szPathToFileReal); + CServerIo::log(CServerIo::logError,logmsg.c_str()); + }*/ + } + else + { + cvs::sprintf(logmsg,255,"CVS Suite Server Configurator Wizard - no valid path to SLN file."); + CServerIo::log(CServerIo::logError,logmsg.c_str()); + } + return; + } + void CWizcfgApp::EnableAgentStartup(CString & szPathToFile, bool setautostart) { cvs::string logmsg; *************** *** 3056,3062 **** szMessage += cmdInfo.m_szUnknown; } szMessage += _T("\n\n"); ! szMessage += _T("wizcfg /AddRights /VistaFirewall /wXPFirewall /CVSNTRestart /SetRepository /Policy /Eclipse /Unenforce /Noeclipse [name]"); CServerIo::log(CServerIo::logNotice,"wizcfg HELP /AddRights /VistaFirewall /wXPFirewall /CVSNTRestart /SetRepository /Policy /Eclipse /Unenforce /Noeclipse [name]"); AfxMessageBox((const TCHAR *)szMessage,MB_ICONINFORMATION); return FALSE; --- 3117,3132 ---- szMessage += cmdInfo.m_szUnknown; } szMessage += _T("\n\n"); ! szMessage += _T("wizcfg /AddRights user-name /VistaFirewall /wXPFirewall /CVSNTRestart /SetRepository /Policy /Eclipse \n"); ! szMessage += _T(" /BUsers num-users /Days num-days /YesFull /Trial /ISV isv-name /KLicenseTypeMulti \n"); ! szMessage += _T(" /MyCompany my-company-name /0Crash /1StartupAgent path-and-file-name /2RightClick \n"); ! szMessage += _T(" /3StartAgent path-and-file-name /GetLicenseInfo /JDisplayRawLicense /LockFile /OpenFile \n"); ! szMessage += _T(" /4CopyVCPoj path-and-file-name.sln new-suffix \n"); ! szMessage += _T(" /zcpylsa path-and-file-name /RegisterLicense /reglic /Force /QuietNot /XtendLicense \n"); ! szMessage += _T(" /Unenforce /Noeclipse [name]"); ! szMessage += _T("\n\n"); ! szMessage += _T("wizcfg is part of CVS Suite ") CVSNT_PRODUCTVERSION_TYEAR _T("(CVSNT ") CVSNT_PRODUCTVERSION_TSTRING _T(")\n"); ! CServerIo::log(CServerIo::logNotice,"wizcfg HELP /AddRights /VistaFirewall /wXPFirewall /CVSNTRestart /SetRepository /Policy /Eclipse /Unenforce /Noeclipse [name]"); AfxMessageBox((const TCHAR *)szMessage,MB_ICONINFORMATION); return FALSE; *************** *** 3751,3756 **** --- 3821,3829 ---- lres = lres/lzer; *lchar = 'a'; } + + if (cmdInfo.m_bCopyVisualStudioSLN) + CopyVisualStudioSLN(cmdInfo.m_szPathToFile,cmdInfo.m_szNewSuffix); if (cmdInfo.m_bStartupAgent) EnableAgentStartup(cmdInfo.m_szPathToFile,false); Index: wizcfg/wizcfg.h =================================================================== RCS file: /scotty/wizard/wizcfg/wizcfg.h,v retrieving revision 1.1.2.9.2.17 diff -c -r1.1.2.9.2.17 wizcfg.h *** wizcfg/wizcfg.h 31 Jan 2024 06:21:16 -0000 1.1.2.9.2.17 --- wizcfg/wizcfg.h 6 Aug 2024 01:38:27 -0000 *************** *** 27,32 **** --- 27,34 ---- bool m_bVistaFirewall; bool m_bRightClick; bool m_bStartupAgent; + bool m_bCopyVisualStudioSLN; + int m_nCopyVisualStudioSLN; bool m_bAutoStartAgent; bool m_bCrash; bool m_bXPFirewall; *************** *** 66,71 **** --- 68,74 ---- CString m_szUnknown; CString m_szISVText; CString m_szPathToFile; + CString m_szNewSuffix; private: bool m_bCompanyName; *************** *** 107,112 **** --- 110,116 ---- void OpenVistaFirewall(void); void EnableRightClick(void); void EnableAgentStartup(CString & szPathToFile, bool setautostart); + void CopyVisualStudioSLN(CString & szPathToFile, CString & szNewSuffix); void OpenXPFirewall(void); BOOL GetAccountSid( LPCTSTR SystemName, LPCTSTR AccountName, PSID *Sid ); bool InitLsaString(PLSA_UNICODE_STRING pLsaString, LPCWSTR pwszString);