UAC 対策コード改良
WinRing0 RC1 で紹介した UAC 対策コードを改良しました。これの C# 版も書かないとなぁ・・・。
必要に応じて権限昇格というのは非常に重要な気がしてきました。
BOOL COlsSampleDlg::ForceLoadDriver()
{
OSVERSIONINFO osvi;
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
::GetVersionEx(&osvi);
if(osvi.dwMajorVersion >= 6
||(osvi.dwMajorVersion == 5 && osvi.dwMinorVersion >= 1))
{
int count;
TCHAR** cmd = ::CommandLineToArgvW(::GetCommandLine(),
&count);
if(GetDllStatus() != OLS_DLL_NO_ERROR)
{
if(count < 2 || _tcscmp(cmd[1], _T("runas")) != 0)
{
TCHAR path[MAX_PATH];
::GetModuleFileName(NULL, path, MAX_PATH);
::ShellExecute(NULL, _T("runas"), path, _T("runas"),
NULL, SW_SHOWNORMAL);
EndDialog(0);
}
return FALSE;
}
}
return TRUE;
}
Windows 2000 でも SP4 をインストールすることで runas 出来ました!!
SP なし + IE6 では runas 出来なかったので、SPx でこの機能が追加されたようですね。詳細は調べても仕方がないので、SP4 ぐらいは入れていただく方向で・・・ついでに、IE6 ぐらいは必須でも良いですよね。さすがに。