MFC - 询问是否以管理员身份运行某程序
来源:互联网 发布:云计算股票龙头股阿里 编辑:程序博客网 时间:2024/05/22 14:23
// 此结构体已在系统头文件中有定义/*BOOL ShellExecuteEx(LPSHELLEXECUTEINFO pExecInfo);typedef struct _SHELLEXECUTEINFO {DWORD cbSize;ULONG fMask;HWND hwnd;PCTSTR lpVerb; // 必须设为runasPCTSTR lpFile; // 提升后的权限启动一个可执行文件路径PCTSTR lpParameters;PCTSTR lpDirectory;int nShow;HINSTANCE hInstApp;PVOID lpIDList;PCTSTR lpClass;HKEY hkeyClass;DWORD dwHotKey;union {HANDLE hIcon;HANDLE hMonitor;} DUMMYUNIONNAME;HANDLE hProcess;} SHELLEXECUTEINFO, *LPSHELLEXECUTEINFO;*/SHELLEXECUTEINFO sei = { sizeof(SHELLEXECUTEINFO) };// Ask for privileges elevation.sei.lpVerb = _T("runas");sei.lpFile = _T("XXXX");sei.lpParameters = _T("PWD");sei.hwnd = this->m_hWnd;// Don't forget this parameter; otherwise, the window will be hidden.sei.nShow = SW_SHOWNORMAL;//如果没有设置 SEE_MASK_NOCLOSEPROCESS, 子进程的句柄则会置NULL,会导致下面等待子进程失败sei.fMask = SEE_MASK_NOCLOSEPROCESS;if (!ShellExecuteEx(&sei)) { DWORD dwStatus = GetLastError(); if (dwStatus == ERROR_CANCELLED) { // 用户取消以管理员身份,做相应响应;}else if (dwStatus == ERROR_FILE_NOT_FOUND) { // 未找到文件;}// 此进程挂起,等待子进程退出WaitForSingleObject( sei.hProcess, INFINITE ); // 清理操作CloseHandle( sei.hProcess );//CloseHandle( sei.hThread )// 下面这段代码可用来将Windows返回的错误码转换成具体的提示文字LPSTR lpBuffer;FormatMessage ( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), // 此乃错误代码,通常在程序中可由 GetLastError()得之 LANG_NEUTRAL, (LPTSTR) & lpBuffer, 0 , NULL );MessageBox(lpBuffer, _T("ErrorMessage"), 0);
- MFC - 询问是否以管理员身份运行某程序
- 检查程序是否以管理员身份运行
- C# WinForm判断程序是否以管理员身份运行
- 判断进程是否"以管理员身份运行"
- Windows7 自动“以管理员身份运行”某程序
- 让程序自动以管理员身份运行
- 如何以管理员身份自动运行 程序
- .net 程序以管理员身份运行
- 让程序自动以管理员身份运行
- C#默认以管理员身份运行程序
- c# 程序以管理员身份运行
- C#默认以管理员身份运行程序
- C#默认以管理员身份运行程序
- c#程序以管理员身份运行
- C#默认以管理员身份运行程序
- VS2010设置程序以管理员身份运行
- C#如何以管理员身份运行程序
- AppleScript 以管理员身份运行程序
- 心理控制的基本信息
- asterisk sip协议栈 register 功能分析
- 在Win7 sp1 64位下安装oracle10g x64的注意事项
- SQLite学习手册(锁和并发控制)
- 如何使用LINQ来简化编程
- MFC - 询问是否以管理员身份运行某程序
- 感到很反感反感
- 加速VS2008的启动速度!...
- 腾讯soso,请停止你们的流氓蜘蛛爬虫
- spring从模板创建mvc例子排错
- 前台调用后台方法(返回字符串)
- 多态,虚函数,纯虚函数,抽象类的相关问题(c++面试常见题目)
- SQLite中将字符串相加
- android网络未连接到服务器