社本@元ネオニート Blog

社本@元ネオニート (元々ワック) のいたずら書き (for Programmers)

AILight Banner
AILight Blog

プロフィール

社本@元ネオニート Blog
働いたら負けかなと思っていたのですが。。とうとう働き始めました。アメリカのシアトル・エリアにある企業向けのバックアップソフトを開発している会社です。日本人は私だけ。なんとか。。やっていけてるようです。

目次

Blog 利用状況

記事分類

過去の記事

タグ

IE7の中からのプロセスの作成 その3 - Windows Vista/Internet Explorer 7

> 前回の記事では、単純に説明してしまいましたが、
> プロセスの起動は、実行ファイルごとにポリシー値を
> レジストリに設定することによって、制御できます。

簡単に登録/解除を行うための関数を整備してみました。

---
 static HRESULT RegisterElevationPolicy(LPCTSTR szGuid, LPCTSTR szAppName, LPCTSTR szAppPath, DWORD dwPolicy)
 {
  CString strSubkey = _T("SOFTWARE\\Microsoft\\Internet Explorer\\Low Rights\\ElevationPolicy\\") + CString(szGuid);

  HKEY hKey = NULL;
  LONG lResult = ::RegCreateKeyEx(HKEY_LOCAL_MACHINE, strSubkey, 0, 0, 0, KEY_ALL_ACCESS, 0, &hKey, 0);
  if (lResult != ERROR_SUCCESS)
  {
   return E_FAIL;
  }

  lResult = ::RegCloseKey(hKey);
  if (lResult != ERROR_SUCCESS)
  {
   // 何もしない。
  }

  DWORD dwResult = thisClass::SHRegSetString(HKEY_LOCAL_MACHINE, strSubkey, _T("AppName"), szAppName);
  if (dwResult != ERROR_SUCCESS)
  {
   return E_FAIL;
  }

  dwResult = thisClass::SHRegSetString(HKEY_LOCAL_MACHINE, strSubkey, _T("AppPath"), szAppPath);
  if (dwResult != ERROR_SUCCESS)
  {
   return E_FAIL;
  }

  dwResult = thisClass::SHRegSetInt(HKEY_LOCAL_MACHINE, strSubkey, _T("Policy"), dwPolicy);
  if (dwResult != ERROR_SUCCESS)
  {
   return E_FAIL;
  }

  return S_OK;
 }
 static HRESULT UnregisterElevationPolicy(LPCTSTR szGuid)
 {
  CString strSubkey = _T("SOFTWARE\\Microsoft\\Internet Explorer\\Low Rights\\ElevationPolicy\\") + CString(szGuid);

  LONG lResult = ::SHDeleteKey(HKEY_LOCAL_MACHINE, strSubkey);
  if (lResult != ERROR_SUCCESS)
  {
   return E_FAIL;
  }

  return S_OK;
 }
 static DWORD SHRegSetString(
  HKEY hkey,
  LPCTSTR pszSubKey,
  LPCTSTR pszValue,
  LPCTSTR pszData)
 {
  ULONG dwType = REG_SZ;
  DWORD dwResult = ::SHSetValue(    // SHLWAPI 4.71
   hkey,
   pszSubKey,
   pszValue,
   dwType,
   pszData,
   (DWORD)(sizeof(TCHAR) * _tcslen(pszData)));

  return dwResult;
 }
 static DWORD SHRegSetInt(
  HKEY hkey,
  LPCTSTR pszSubKey,
  LPCTSTR pszValue,
  DWORD dwData)
 {
  ULONG dwType = REG_DWORD;
  DWORD dwResult = ::SHSetValue(    // SHLWAPI 4.71
   hkey,
   pszSubKey,
   pszValue,
   dwType,
   &dwData,
   sizeof(dwData));

  return dwResult;
 }
---


■IE7の中からのプロセスの作成 その2 - Windows Vista/Internet Explorer 7 - 社本@ワック
http://www.ailight.jp/blog/sha256/archive/2007/02/21/13600.aspx

投稿日時 : 2007年2月21日 16:43


コメントを追加

タイトル
名前
URL
コメント