2009-04-16 15 views
1

を作成します。私はUACを有効にすると、プログラムのWindows Vistaのログオンアカウントを作成したいVistaのユーザーアカウント

私は、ユーザーアカウントを作成し、それがNTおよびWindows XP上の年間働いたが、Vista上でアカウントを作成するときに、今私たちのアプリケーションがアクセス拒否で失敗OCXを持っています。私たちの顧客がUACをオフにして、そのアプリケーションをセットアップすればうまく動作します。ただし、アプリの設定を完了する前に、ユーザーにUACと再起動を無効にすることは許されません。

答えて

1

あなたはVistaでは管理者権限でアプリケーションを実行した場合、それは動作しますか?

また、このコードを使用して昇格した権限を持つCOMオブジェクトを作成することができます。

HRESULT __stdcall CreateElevatedComObject(HWND hwnd, REFCLSID rclsid, REFIID riid, __out IUnknown ** ppv) 
{ 
    OSVERSIONINFO ver={sizeof(ver)}; 
    if (GetVersionEx(&ver) && ver.dwMajorVersion > 5) 
    { 
     BIND_OPTS3 bo; 
     WCHAR wszCLSID[50]; 
     WCHAR wszMonikerName[300]; 

     if (StringFromGUID2(rclsid, wszCLSID, ELEMENTS(wszCLSID))) 
     { 
      HRESULT hr = StringCchPrintf(wszMonikerName, 
       ELEMENTS(wszMonikerName), 
       L"Elevation:Administrator!new:%s", 
       wszCLSID); 
      if (FAILED(hr)) 
       return hr; 
      memset(&bo, 0, sizeof(bo)); 
      bo.cbStruct = sizeof(bo); 
      bo.hwnd = hwnd; 
      bo.dwClassContext = CLSCTX_LOCAL_SERVER; 
      return CoGetObject(wszMonikerName, &bo, riid, (void **)ppv); 
     } 
     return E_FAIL; 
    } 
    else 
     return ::CoCreateInstance(rclsid,NULL,CLSCTX_ALL,riid,(void**)ppv); 
} 

UACの下で実行

は、それが昇格ダイアログを提示します。オブジェクトはdllhostのプロセス外で実行されますが(私は思うが)完全な管理者権限を持っている。

step by step guide for UAC in Vistaを見てください。展開する際にUACの対処について

+0

ありがとうございます。いいえ、管理者権限では動作しません。私はこのコードを私の現在のOCXに入れることができます。これによってジアグが出現するでしょうか?これはWebページから実行されるOCXであることに留意してください。 ありがとうございます。 – LilMoke

+0

いいえ、COMオブジェクトを作成するために使用している通常のコードの代わりにこれを実行する必要があります。 IEの中で実行している場合は、実行時に権限を意図的に削除するため、セキュリティの境界がさらに広がります。 –

+0

あなたは右IEをクリックして、これはIEがいっぱいフィルタリングされていない管理者として実行するようになります「管理者として実行」を選択した場合 - あなただけ正常にそれを実行した場合、その後、VistaはIE(または実際に任意のプロセス)は、実際の管理者権限なしで実行するようになります、マシンの管理者であっても –

1

Here's another article。既にいくつかのVistaのデプロイメントの問題を経験しているので、私があなたに言うことができるのは幸運です。 :)

関連する問題