Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

135 lines
4.2 KiB

#if 0
//---------------------------------------------------------------------------------------
// ZoneToString
//---------------------------------------------------------------------------------------
HRESULT ZoneToString(DWORD dwZone, CString & sZone)
{
HRESULT hr = S_OK;
switch(dwZone)
{
case 0:
hr = sZone.Assign(L"MyComputer");
break;
case 1:
hr = sZone.Assign(L"Intranet");
break;
case 2:
hr = sZone.Assign(L"Trusted");
break;
case 3:
hr = sZone.Assign(L"Internet");
break;
case 4:
default:
hr = sZone.Assign(L"Untrusted");
break;
}
return hr;
}
#endif
// handle for fnsshell.dll, saved in shelldll.cpp
extern HINSTANCE g_DllInstance;
//---------------------------------------------------------------------------------------
// MakeCommandLine
//---------------------------------------------------------------------------------------
HRESULT MakeCommandLine(LPWSTR pwzManifestPath,
LPWSTR pwzCodebase, CString &sHostPath, CString &sCommandLine)
{
HRESULT hr = S_OK;
MAKE_ERROR_MACROS_STATIC(hr);
LPWSTR pwzClickOncePath = NULL;
CString sCodebase;
IF_ALLOC_FAILED_EXIT(pwzClickOncePath = new WCHAR[MAX_PATH]);
IF_WIN32_FALSE_EXIT(GetModuleFileName(g_DllInstance, pwzClickOncePath, MAX_PATH));
#if 0
IF_FAILED_EXIT(ZoneToString(dwZone, sZone));
#endif
if (pwzCodebase != NULL)
{
IF_FAILED_EXIT(sCodebase.Assign(pwzCodebase));
IF_FAILED_EXIT(sCodebase.RemoveLastElement());
IF_FAILED_EXIT(sCodebase.Append(L"/"));
}
else
{
//run from source
IF_FAILED_EXIT(sCodebase.Assign(L"file://"));
IF_FAILED_EXIT(sCodebase.Append(pwzManifestPath));
IF_FAILED_EXIT(sCodebase.RemoveLastElement());
IF_FAILED_EXIT(sCodebase.Append(L"/"));
}
IF_FAILED_EXIT(sHostPath.TakeOwnership(pwzClickOncePath, 0));
pwzClickOncePath = NULL;
IF_FAILED_EXIT(sHostPath.RemoveLastElement());
IF_FAILED_EXIT(sHostPath.Append(L"\\ndphost.exe"));
// NDP doesn't like a commandline without the path to exe
IF_FAILED_EXIT(sCommandLine.Assign(L"\""));
IF_FAILED_EXIT(sCommandLine.Append(sHostPath));
IF_FAILED_EXIT(sCommandLine.Append(L"\" "));
#if 0
// NTRAID#NTBUG9-588432-2002/03/27-felixybc validate codebase, asmname, asm class, method, args
// - asm names can have spaces,quotes?
IF_FAILED_EXIT(sCommandLine.Append(L"-appbase: \""));
IF_FAILED_EXIT(sCommandLine.Append(pwzAppRootDir));
IF_FAILED_EXIT(sCommandLine.Append(L"\" -zone: "));
IF_FAILED_EXIT(sCommandLine.Append(sZone));
IF_FAILED_EXIT(sCommandLine.Append(L" -url: \""));
IF_FAILED_EXIT(sCommandLine.Append(sCodebase));
IF_FAILED_EXIT(sCommandLine.Append(L"\" -asmname: \""));
IF_FAILED_EXIT(sCommandLine.Append(pwzAsmName));
IF_FAILED_EXIT(sCommandLine.Append(L"\" "));
if(pwzAsmClass)
{
IF_FAILED_EXIT(sCommandLine.Append(L" -class: "));
IF_FAILED_EXIT(sCommandLine.Append(pwzAsmClass));
if(pwzAsmMethod)
{
IF_FAILED_EXIT(sCommandLine.Append(L" -method: "));
IF_FAILED_EXIT(sCommandLine.Append(pwzAsmMethod));
if(pwzAsmArgs)
{
IF_FAILED_EXIT(sCommandLine.Append(L" -args: \""));
IF_FAILED_EXIT(sCommandLine.Append(pwzAsmArgs));
IF_FAILED_EXIT(sCommandLine.Append(L"\" "));
}
}
}
#endif
IF_FAILED_EXIT(sCommandLine.Append(L"\"file://"));
IF_FAILED_EXIT(sCommandLine.Append(pwzManifestPath));
IF_FAILED_EXIT(sCommandLine.Append(L"\" \""));
IF_FAILED_EXIT(sCommandLine.Append(sCodebase));
IF_FAILED_EXIT(sCommandLine.Append(L"\""));
LPWSTR ptr = sCommandLine._pwz;
// bugbug - need to ensure no \" at end of command line or else thinks its a literal quote.
// and fix this for only filepath
while (*ptr)
{
if (*ptr == L'\\')
*ptr = L'/';
ptr++;
}
exit:
SAFEDELETEARRAY(pwzClickOncePath);
return hr;
}