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;
}

おすすめ

1件の返信

  1. hiyohiyo より:

    Windows 2000 でも SP4 をインストールすることで runas 出来ました!!
    SP なし + IE6 では runas 出来なかったので、SPx でこの機能が追加されたようですね。詳細は調べても仕方がないので、SP4 ぐらいは入れていただく方向で・・・ついでに、IE6 ぐらいは必須でも良いですよね。さすがに。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です