BOOL MRegistryBase::ConnectRemote(LPCSTR asServer, LPCSTR asLogin /*= NULL*/, LPCSTR asPassword /*= NULL*/, LPCSTR asResource /*= NULL*/) { wchar_t szServer[MAX_PATH+2], szLogin[MAX_PATH], szPassword[MAX_PATH], szResource[MAX_PATH]; szServer[0] = szLogin[0] = szPassword[0] = szResource[0] = 0; if (asServer && *asServer) lstrcpy_t(szServer, countof(szServer), asServer); if (asLogin && *asLogin) lstrcpy_t(szLogin, countof(szLogin), asLogin); if (asPassword && *asPassword) lstrcpy_t(szPassword, countof(szPassword), asPassword); if (asResource && *asResource) lstrcpy_t(szResource, countof(szResource), asResource); return ConnectRemote(szServer, szLogin, szPassword, szResource); }
TCHAR* lstrdup_t(LPCWSTR asText) { int nLen = asText ? lstrlenW(asText) : 0; TCHAR* psz = (TCHAR*)malloc((nLen+1)*sizeof(TCHAR)); if (nLen) lstrcpy_t(psz, nLen+1, asText); else psz[0] = 0; return psz; }
wchar_t* lstrdup_w(LPCSTR asText) { int nLen = asText ? lstrlenA(asText) : 0; wchar_t* psz = (wchar_t*)malloc((nLen+1)*sizeof(wchar_t)); if (nLen) lstrcpy_t(psz, nLen+1, asText); else psz[0] = 0; return psz; }
BOOL REProgress::SetStep(unsigned __int64 anAllStep, BOOL abForce /*= FALSE*/, LPCWSTR asFileName /*= NULL*/) { nCurrent = anAllStep; nCounter++; //if (asFileName) { // int nLen = lstrlen(asFileName), nSize = countof(sFileInfo); // if (nLen >= nSize) { // lstrcpy_t(sFileInfo, nSize-3, asFileName); // lstrcat(sFileInfo, _T("...")); // } else { // lstrcpy_t(sFileInfo, nSize, asFileName); // } //} if (abForce || (/*nCounter >= 10 &&*/ (GetTickCount() - nLastTick) >= nStepDuration) ) { if (asFileName && *asFileName) { int nLen = lstrlenW(asFileName), nSize = countof(sFileInfo); if (nLen >= nSize) { lstrcpy_t(sFileInfo, nSize-3, asFileName); lstrcat(sFileInfo, _T("...")); } else { lstrcpy_t(sFileInfo, nSize, asFileName); } } else if (sFileInfo[0]) { // Иначе на экране появляются неприятные артефакты от удаленной строки sFileInfo[0] = _T(' '); sFileInfo[1] = 0; } Update(/*sFileInfo[0] ? sFileInfo : NULL*/); } return (!bEscaped); }
static LONG GetString(HANDLE hk, LPCWSTR asName, char* pszValue, DWORD cCount) { LONG nRegRc; DWORD nSize; wchar_t sValue[128] = {0}; _ASSERTE(cCount<=128); nSize = sizeof(sValue)-2; nRegRc = RegQueryValueExW((HKEY)hk, asName, NULL, NULL, (LPBYTE)sValue, &nSize); if (nRegRc == 0) { lstrcpy_t(pszValue, cCount, sValue); } else { if (cfg) cfg->bSomeValuesMissed = TRUE; } MCHKHEAP; return nRegRc; }
BOOL REPluginList::GetSIDName(LPCWSTR asComputer, PSID pSID, TCHAR* pszOwner, DWORD cchOwnerMax) { BOOL lbExist = FALSE; _ASSERTE(pszOwner!=0); *pszOwner = 0; // Кеш if (mp_SidCache && nSidCount) { for (DWORD i = 0; i < nSidCount; i++) { if (EqualSid(pSID, mp_SidCache[i].pSID)) { lstrcpyn(pszOwner, mp_SidCache[i].pszOwner, cchOwnerMax); return TRUE; } } } // Если в кеше нет - читаем из системы DWORD nAccountLength = 0, nDomainLength = 0; SID_NAME_USE snu; DWORD nLastErr = 0; if (!asComputer) asComputer = L""; BOOL lbRc = LookupAccountSidW(asComputer, pSID, NULL, &nAccountLength, NULL, &nDomainLength, &snu); if (!lbRc) nLastErr = GetLastError(); if (nAccountLength && nDomainLength) { LPWSTR pszAccount = (wchar_t*)calloc(nAccountLength+1,2); LPWSTR pszDomain = (wchar_t*)calloc(nDomainLength+1,2); if (pszAccount && pszDomain) { if (!LookupAccountSidW(asComputer, pSID, pszAccount, &nAccountLength, pszDomain, &nDomainLength, &snu)) { nLastErr = GetLastError(); } else { //if (*pszDomain && (nDomainLength+nAccountLength+1) <= cchOwnerMax) //{ // lstrcpy_t(pszOwner, cchOwnerMax, pszDomain); // lstrcat(pszOwner, _T("\\")); // lstrcpy_t(pszOwner+lstrlen(pszOwner), cchOwnerMax-nDomainLength, pszAccount); //} else { lstrcpy_t(pszOwner, cchOwnerMax, pszAccount); //} lbExist = TRUE; } } SafeFree(pszAccount); SafeFree(pszDomain); } // Кеш if (!mp_SidCache || (nSidCount+1) > nMaxSidCount) { nMaxSidCount = nSidCount + 128; SidCache *pSidCache = (SidCache*)calloc(nMaxSidCount, sizeof(SidCache)); if (nSidCount) { memmove(pSidCache, mp_SidCache, sizeof(SidCache)*nSidCount); SafeFree(mp_SidCache); } mp_SidCache = pSidCache; } DWORD nSidLen = GetLengthSid(pSID); mp_SidCache[nSidCount].pSID = (PSID)calloc(nSidLen,1); CopySid(nSidLen, mp_SidCache[nSidCount].pSID, pSID); mp_SidCache[nSidCount].pszOwner = lstrdup(lbExist ? pszOwner : _T("")); nSidCount++; return lbExist; }
void RegConfig::BookmarksEdit() { if (!bUseInternalBookmarks) return; if (szBookmarksValueName[0] == 0) { _ASSERTE(szBookmarksValueName[0]); return; } MFileTxtReg file(bWow64on32_); BOOL lbFarUnicode = #ifdef _UNICODE TRUE #else FALSE #endif ; if (!file.FileCreateTemp(szBookmarksValueName, L".txt", lbFarUnicode)) { InvalidOp(); return; } if (pszBookmarks) { if (!file.FileWriteMSZ(pszBookmarks, BookmarksLen(NULL))) { InvalidOp(); file.FileDelete(); return; } } file.FileClose(); TCHAR sTitle[64]; lstrcpy_t(sTitle, countof(sTitle), szBookmarksValueName); int nEdtRc = psi.Editor(file.GetShowFilePathName(), sTitle, 0,0,-1,-1, EF_DISABLEHISTORY/*EF_NONMODAL|EF_IMMEDIATERETURN|EF_DELETEONCLOSE|EF_ENABLE_F6*/, #ifdef _UNICODE 1, 1, 1200 #else 0, 1 #endif ); if (nEdtRc == EEC_MODIFIED) { wchar_t* pszNew = NULL; DWORD cbNewSize = 0; if (MFileTxt::LoadTextMSZ(file.GetFilePathName(), lbFarUnicode, &pszNew, &cbNewSize) == 0) { BookmarkParse(pszNew, cbNewSize/2); SafeFree(pszNew); //if (cchBookmarksMaxCount*2 < cbNewSize) //{ // SafeFree(pszBookmarks); // cchBookmarksMaxCount = (cbNewSize >> 1) + 512; // pszBookmarks = (wchar_t*)calloc(cchBookmarksMaxCount,2); //} //if (pszBookmarks) // memmove(pszBookmarks, pszNew, cbNewSize); //SafeFree(pszNew); //cchBookmarksLen = (cbNewSize >> 1); //if (cchBookmarksLen == 0) //{ // _ASSERTE(cchBookmarksLen > 0); // cchBookmarksLen = 1; // pszBookmarks[0] = pszBookmarks[1] = 0; //} //else //{ // if (cchBookmarksLen<1 || pszBookmarks[cchBookmarksLen-1] != 0) // pszBookmarks[cchBookmarksLen++] = 0; // if (cchBookmarksLen<2 || pszBookmarks[cchBookmarksLen-2] != 0) // pszBookmarks[cchBookmarksLen++] = 0; //} } _ASSERTE(bUseInternalBookmarks); BookmarksSaveInt(); } // ВРЕМЕННЫЙ файл больше не нужен! file.FileDelete(); }