Esempio n. 1
0
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);	
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
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);
}
Esempio n. 5
0
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;
}
Esempio n. 6
0
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;
}
Esempio n. 7
0
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();
}