WinRing0 RC1
主な修正点
- マニュアル更新
- ソリューション・プロジェクトファイルの整理
- サンプルプログラム更新
- プロジェクトアイコンの追加
- デバイスドライバに
オレオレ自己署名を付与
オレオレ署名搭載カーネルモードドライバ
サンプルプログラム C++ 版について
- デバイスドライバがインストールされている場合は、UAC による権限昇格を求めないように変更しました。この変更により、OpenLibSys Driver Manager でデバイスドライバをインストールしてしまえば、いちいち権限昇格をすることなく WinRing0 のすべての機能が使用できます。
- ちなみに、OpenLibSys Driver Manager はデバイスドライバのインストール&アンインストールを行うため、管理者権限が必須となります。
正式版リリースまであと一歩。一応、デジタル署名が取得でき次第正式版に格上げする予定です。(本当に取得できるんだろうか・・・という不安も少しはありますが)
◇ダウンロード:WinRing0 RC1
ちなみに、UAC 対策コードは以下のような感じです。ShellExcute に “runas” を渡すのがポイントで、こうすることによって権限昇格用のダイアログが出るようになります。ただし、Windows 2000/NT4 は対応していないようなので、XP 以降のみ当該処理を行うようにしています。
BOOL COlsSampleDlg::ForceLoadDriver()
{
OSVERSIONINFO osvi;
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
::GetVersionEx(&osvi);
if(osvi.dwMajorVersion >= 6
||(osvi.dwMajorVersion == 5 && osvi.dwMinorVersion >= 1))
{
int count;
BOOL FlagShellExecute = TRUE;
TCHAR** cmd = ::CommandLineToArgvW(
::GetCommandLine(), &count);
if(count >= 2 && _tcscmp(cmd[1], _T("runas")) == 0)
{
FlagShellExecute = FALSE;
}
if(GetDllStatus() != OLS_DLL_NO_ERROR)
{
if(FlagShellExecute)
{
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件の返信
[…] WinRing0 RC1 で紹介した UAC 対策コードを改良しました。これの C# 版も書かないとなぁ・・・。 必要に応じて権限昇格というのは非常に重要な気がしてきました。 […]