Windows 7でVisual Studio 2008を使用してMFCでアプリケーションを作成しています。私のアプリケーションは管理アクセスを必要とするサービスを開始して停止します。アプリケーションが起動すると、管理者権限がありません。しかし、私はサービスを開始ボタンをクリックすると、管理アクセスを取得し、アクションを実行します。管理アクセスを必要とするアクションのボタンに管理アイコンを設定する方法は不思議です。 Flagsを設定する必要はありますか? ありがとうMFCダイアログボックスの管理権限アイコンの設定方法は?
答えて
Windows Vistaでは、新しいフラグの1つを使用してボタンにシールドアイコンを追加できます。あなたはこのように使用することができ、それを有効にするには、マクロは、あります:マクロの
Button_SetElevationRequiredState(hwnd, TRUE);
ドキュメントがhttp://msdn.microsoft.com/en-us/library/bb761865%28VS.85%29.aspx
にある多くのUAC関連のタスクを実行する方法の概要についてはhttp://msdn.microsoft.com/en-us/library/bb756990.aspx#BKMK_ShieldButtonを参照してください。
CButton :: SetElevationRequired()もありますが、これはおそらく同じことをしますが、MFCプロジェクトに沿ったものになります。また、あなたは行うのいずれかまたはのエントリwitout(マニフェストファイルを使用してできる一般的なコントロールv6のDLLの使用を有効にする必要が
ctl->SetElevationRequired(TRUE);
がhttp://msdn.microsoft.com/en-us/library/bb386824%28v=VS.90%29.aspx
を参照してください:あなたはこのようにそれを使用することができますMSVC2005以降のコードで#pragmaディレクティブを使用してください)。 MFCアプリケーションには、既に変更可能なマニフェストがある可能性がありますが、MFCへのアクセス権がないため、そこにお手伝いできません。
マニフェストルートに行くと、このようになり、アプリケーションと同じ名前になりますが、.exeの後に ".manifest"が付きます。 MyApp.exe.manifest:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="*"
name="CompanyName.ProductName.YourApplication"
type="win32"
/>
<description>Your application description here.</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
#pragmaについては、次のコードを参照してください。 http://msdn.microsoft.com/en-us/library/bb773175%28v=vs.85%29.aspx
共通コントロールV6を可能にするために、プラグマディレクティブを使用して標高を表示する小さなWin32の例:一般的なコントロールは(Iから上記の情報を得た場合である)、このリンクを参照V6を使用する方法の詳細については
アイコン:
#include <windows.h>
#include <commctrl.h>
#include <stdio.h>
#pragma comment(linker,"\"/manifestdependency:type='win32' \
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain (HINSTANCE instance,
HINSTANCE previnst,
LPSTR args,
int wndState)
{
int i;
MSG messages;
WNDCLASSEX wincl;
ZeroMemory(&wincl, sizeof(wincl));
wincl.hInstance = instance;
wincl.lpszClassName = L"WindowsApp";
wincl.lpfnWndProc = WindowProcedure;
wincl.style = CS_DBLCLKS;
wincl.cbSize = sizeof wincl;
wincl.hbrBackground = (HBRUSH) (COLOR_BTNFACE + 1);
InitCommonControls();
wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor(NULL, IDC_ARROW);
if (!RegisterClassEx (&wincl))
return 0;
HWND hwnd = CreateWindow(L"WindowsApp", L"Windows App", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 544, 375, HWND_DESKTOP, NULL, instance, NULL);
HWND hButton = CreateWindow(L"BUTTON", L"Do something", WS_TABSTOP | WS_VISIBLE | WS_CHILD, 10, 10, 200, 23, hwnd, NULL, (HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE), NULL);
SendMessage(hButton, WM_SETFONT, (LPARAM) GetStockObject(DEFAULT_GUI_FONT), FALSE);
Button_SetElevationRequiredState(hButton, TRUE);
ShowWindow(hwnd, wndState);
while (GetMessage(&messages, NULL, 0, 0) > 0)
{
TranslateMessage(&messages);
DispatchMessage(&messages);
}
return messages.wParam;
}
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc (hwnd, message, wParam, lParam);
}
return 0;
}
- 1. 管理権限の表示方法
- 2. データアクセス/ユーザー権限の管理
- 3. スクリプトの管理者権限
- 4. プログラムでDjangoの管理者権限を設定する
- 5. Symfony2ユーザ権限管理
- 6. JavaFX System.setProperty管理者権限
- 7. 変更権限クラスタ管理
- 8. 管理者権限c#/ vb
- 9. AutoHotkeyスクリプトに管理者権限を追加する方法は?
- 10. c#管理者権限でのインストールを避ける方法
- 11. Djangoの管理者権限へのアクセス
- 12. Djangoのスタッフ権限を管理する
- 13. 管理者権限のないNSISインストーラ
- 14. 管理者権限のないSFML 1.6
- 15. Delphiの管理者権限D7 W7
- 16. easy_installを-U setuptoolsの管理者権限
- 17. AngularJS複数の権限管理
- 18. 管理者権限のないWCFサーバー
- 19. vb.netの管理者権限を作成
- 20. グローバル管理者権限のないプロジェクト固有のワークフローを設定する
- 21. 管理者権限なしでプロセスを開始する方法
- 22. 安定したマシンIDを得る方法**なし**管理者権限なし
- 23. Django Folders権限の設定?
- 24. 管理者権限を持つJavaプロジェクト
- 25. firebaseサーバ管理者権限で認証
- 26. 管理権限とみなされる[Windows]権限はどれですか?
- 27. 管理者権限のないユーザーは、ハイブのオブジェクトアクセス権を管理できますか?
- 28. プログラムによる現在のユーザーサイト管理者権限の付与方法
- 29. Nginx設定バージョン管理方法
- 30. アンドロイドでのアプリケーション権限の設定方法
私はこれを試しましたが、ボタンにシールドアイコンが表示されませんでした。サンプルコードテンプレートを私に提供してもらえますか?ありがとう –
@Ali Ahmed:私は例と詳細な説明を追加しました。 – tinman