// RunUserDlg.cpp : インプリメンテーション ファイル
//
#include "stdafx.h"
#include "RunUser.h"
#include "RunUserDlg.h"
#include "hyperlink.h"
#include "privDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// アプリケーションのバージョン情報で使われている CAboutDlg ダイアログ
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// ダイアログ データ
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
CHyperLink m_linkCodeGuru;
CHyperLink m_linkLab;
CHyperLink m_linkTDU;
//}}AFX_DATA
// ClassWizard 仮想関数のオーバーライドを生成します。
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV のサポート
//}}AFX_VIRTUAL
// インプリメンテーション
protected:
//{{AFX_MSG(CAboutDlg)
virtual BOOL OnInitDialog();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
DDX_Control(pDX, IDC_LINK_CODEGURU, m_linkCodeGuru);
DDX_Control(pDX, IDC_LINK_LAB, m_linkLab);
DDX_Control(pDX, IDC_LINK_TDU, m_linkTDU);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
BOOL CAboutDlg::OnInitDialog()
{
m_linkTDU.SetURL(_T("http://www.dendai.ac.jp"));
m_linkTDU.ModifyLinkStyle(0, CHyperLink::StyleUseHover);
m_linkLab.SetURL(_T("http://www.chi.c.dendai.ac.jp/"));
m_linkLab.ModifyLinkStyle(0, CHyperLink::StyleUseHover);
m_linkCodeGuru.SetURL(_T("http://www.codeguru.com"));
m_linkCodeGuru.ModifyLinkStyle(0, CHyperLink::StyleUseHover);
CDialog::OnInitDialog();
m_linkTDU.SetWindowText(_T("Tokyo Denki University"));
m_linkLab.SetWindowText(_T("Moriya Lab, Dept. of Info. Medai, TDU"));
m_linkCodeGuru.SetWindowText(_T("CodeGuru WWW Site"));
return TRUE; // コントロールにフォーカスを設定しないとき、戻り値は TRUE となります
// 例外: OCX プロパティ ページの戻り値は FALSE となります
}
/////////////////////////////////////////////////////////////////////////////
// CRunUserDlg ダイアログ
CRunUserDlg::CRunUserDlg(CWnd* pParent /*=NULL*/)
: CDialog(CRunUserDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CRunUserDlg)
m_strPwd = _T("");
m_strDomain = _T("");
m_strName = _T("");
//}}AFX_DATA_INIT
// メモ: LoadIcon は Win32 の DestroyIcon のサブシーケンスを要求しません。
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CRunUserDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CRunUserDlg)
DDX_Control(pDX, IDC_EDIT_EXE_PARAM, m_editParam);
DDX_Control(pDX, IDC_EDIT_DESKTOP, m_editDesktop);
DDX_Control(pDX, IDC_EDIT_EXE, m_editExe);
DDX_Control(pDX, IDC_LIST, m_list);
DDX_Text(pDX, IDC_EDIT_PWD, m_strPwd);
DDX_Text(pDX, IDC_EDIT_DOMAIN, m_strDomain);
DDX_Text(pDX, IDC_EDIT_NAME, m_strName);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CRunUserDlg, CDialog)
//{{AFX_MSG_MAP(CRunUserDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON_XWD, OnButtonXwd)
ON_BN_CLICKED(IDC_BUTTON_LAUNCH, OnButtonLaunch)
ON_BN_CLICKED(IDC_BUTTON_BROWSER_EXE, OnButtonBrowserExe)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST, OnItemchangedList)
ON_BN_CLICKED(IDC_BUTTON_BROWSER_USER, OnButtonBrowserUser)
ON_BN_CLICKED(IDC_BUTTON_BROWSER_DESKTOP, OnButtonBrowserDesktop)
ON_BN_CLICKED(IDC_BUTTON_PRIVILEGE, OnButtonPrivilege)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CRunUserDlg メッセージ ハンドラ
BOOL CRunUserDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// "バージョン情報..." メニュー項目をシステム メニューへ追加します。
// IDM_ABOUTBOX はコマンド メニューの範囲でなければなりません。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// このダイアログ用のアイコンを設定します。フレームワークはアプリケーションのメイン
// ウィンドウがダイアログでない時は自動的に設定しません。
SetIcon(m_hIcon, TRUE); // 大きいアイコンを設定
SetIcon(m_hIcon, FALSE); // 小さいアイコンを設定
TCHAR szTitle[1024];
lstrcpy(szTitle, TEXT("RunUser is running as \""));
ULONG lSize = chDIMOF(szTitle) - lstrlen(szTitle);
GetUserName(szTitle+lstrlen(szTitle),&lSize);
lstrcat(szTitle, TEXT("\""));
::SetWindowText(this->m_hWnd, szTitle);
m_editDesktop.SetWindowText(TEXT("Winsta0\\Default"));
m_tt.Create(this);
m_tt.SetMaxTipWidth(400);
m_tt.AddWindowTool (GetDlgItem (IDC_BUTTON_BROWSER_DESKTOP),
_T("Browser Target Desktop"));
m_tt.AddWindowTool (GetDlgItem (IDC_BUTTON_BROWSER_USER),
_T("Browser Local User Available"));
m_tt.AddWindowTool (GetDlgItem (IDC_BUTTON_BROWSER_EXE),
_T("Browser Target Exe To Launch"));
m_tt.AddWindowTool (GetDlgItem (IDC_BUTTON_XWD),
_T("Test User Name -- Password Pair Correctness"));
m_tt.AddWindowTool (GetDlgItem (IDC_BUTTON_LAUNCH),
_T("Run Target Exe As User, If Failed, Err MessageBox Will Pop. Please Be Patient, For Security Checking Need Time"));
m_tt.AddWindowTool (GetDlgItem (IDC_EDIT_DOMAIN),
_T("User's Domain Name, Leave It Blank When Log on Local Machine"));
m_tt.AddWindowTool (GetDlgItem (IDC_EDIT_NAME),
_T("User Name, Blank Means \"System\""));
m_tt.AddWindowTool (GetDlgItem (IDC_EDIT_PWD),
_T("User Password, Keep Blank When Logging on As \"System\""));
m_tt.AddWindowTool (GetDlgItem (IDC_LIST),
_T("Predefined Utility, Click To Choose"));
m_tt.AddWindowTool (GetDlgItem (IDC_LOGONTYPE),
_T("Log On User Type"));
m_tt.AddWindowTool (GetDlgItem (IDC_LOGONPROVIDER),
_T("Log On Provider"));
m_tt.AddWindowTool (GetDlgItem (IDC_EDIT_DESKTOP),
_T("Target Desktop"));
m_tt.AddWindowTool (GetDlgItem (IDC_EDIT_EXE),
_T("Target Exe Full Path"));
m_tt.AddWindowTool (GetDlgItem (IDC_EDIT_EXE_PARAM),
_T("Target Exe Param(Command Line)"));
m_tt.AddWindowTool (GetDlgItem (IDC_BUTTON_PRIVILEGE),
_T("View Your Current Privilege & Make Adjustment"));
m_tt.AddWindowTool (this,
_T("F5 To Refresh Title Bar"));
HWND g_hwndLogonTypes = ::GetDlgItem(m_hWnd, IDC_LOGONTYPE);
HWND g_hwndLogonProviders = ::GetDlgItem(m_hWnd, IDC_LOGONPROVIDER);
int nIndex = ::SendMessage(g_hwndLogonTypes, CB_ADDSTRING, 0,
(LPARAM) L"Batch");
::SendMessage(g_hwndLogonTypes, CB_SETITEMDATA, nIndex,
LOGON32_LOGON_BATCH);
nIndex = ::SendMessage(g_hwndLogonTypes, CB_ADDSTRING, 0,
(LPARAM) L"Network");
::SendMessage(g_hwndLogonTypes, CB_SETITEMDATA, nIndex,
LOGON32_LOGON_NETWORK);
nIndex = ::SendMessage(g_hwndLogonTypes, CB_ADDSTRING, 0,
(LPARAM) L"Network Cleartext");
::SendMessage(g_hwndLogonTypes, CB_SETITEMDATA, nIndex,
LOGON32_LOGON_NETWORK_CLEARTEXT);
nIndex = ::SendMessage(g_hwndLogonTypes, CB_ADDSTRING, 0,
(LPARAM) L"New Credentials");
::SendMessage(g_hwndLogonTypes, CB_SETITEMDATA, nIndex,
LOGON32_LOGON_NEW_CREDENTIALS);
nIndex = ::SendMessage(g_hwndLogonTypes, CB_ADDSTRING, 0,
(LPARAM) L"Service");
::SendMessage(g_hwndLogonTypes, CB_SETITEMDATA, nIndex,
LOGON32_LOGON_SERVICE);
nIndex = ::SendMessage(g_hwndLogonTypes, CB_ADDSTRING, 0,
(LPARAM) L"Unlock");
::SendMessage(g_hwndLogonTypes, CB_SETITEMDATA, nIndex,
LOGON32_LOG
没有合适的资源?快使用搜索试试~ 我知道了~
基于图形用户界面的RunAs 程序(GUI RunAs) < WIN32 API >
共29个文件
h:13个
cpp:11个
clw:1个
需积分: 10 25 下载量 158 浏览量
2009-06-24
21:39:32
上传
评论
收藏 57KB ZIP 举报
温馨提示
为了在另一个用户上下文中启动程序,Win2k 提供了一个命令行程序工具——RunAs。在网上(如www.codeguru.com)也能找到同样功能的程序和代码。有人要求我为这个工具做一个图形用户界面的版本。本文就是为此而写的。为了不“重新发明轮子”,我的工作是基于前人的基础来实现的。
资源推荐
资源详情
资源评论
收起资源包目录
RunUser.zip (29个子文件)
RunUser.h 3KB
RunUserDlg.h 2KB
zToolTipCtrl.h 349B
StdAfx.cpp 11KB
resource.h 3KB
RunUser.rc 11KB
RunUser.cpp 2KB
PrivDlg.cpp 5KB
AUTOBUF.CPP 2KB
DesktopListDlg.cpp 4KB
zToolTipCtrl.cpp 1KB
PrivDlg.h 1KB
CTRLEXT.INL 430B
RunUser.dsw 545B
LSASTR.CPP 2KB
RunUser.clw 4KB
HyperLink.h 4KB
RunUser.dsp 7KB
HyperLink.cpp 18KB
StdAfx.h 2KB
DesktopListDlg.h 1KB
AUTOBUF.H 4KB
CMNHDR.H 9KB
LISTCTRLEX.CPP 3KB
RunUserDlg.cpp 22KB
AccountListDlg.h 2KB
AccountListDlg.cpp 8KB
LISTCTRLEX.H 760B
LSASTR.H 1009B
共 29 条
- 1
资源评论
jlugjb
- 粉丝: 2
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功