在XP下用OpenProcess正常,在vista下返回错误
现采用如下代码(试图提升权限,该代码在OpenProcess之前运行),但依然无效OpenProcess返回错误 LUID luid;
LookupPrivilegeValue(NULL, "SeDebugPrivilege", &luid);
TOKEN_PRIVILEGES tp;
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; HANDLE hProcessToken;
OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &hProcessToken); AdjustTokenPrivileges(hProcessToken, FALSE, &tp, 0, NULL, NULL); CloseHandle(hProcessToken);
程序右键:Run As Administrator(以管理员身份运行) OpenProcess返回正常
使用MS TechNET的专门提升exe权限的插件运行也能通过
问题: 如何是程序在运行期间自动提升权限?
请回答简明扼要,针对性强!
现采用如下代码(试图提升权限,该代码在OpenProcess之前运行),但依然无效OpenProcess返回错误 LUID luid;
LookupPrivilegeValue(NULL, "SeDebugPrivilege", &luid);
TOKEN_PRIVILEGES tp;
tp.PrivilegeCount = 1;
tp.Privileges[0].Luid = luid;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; HANDLE hProcessToken;
OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &hProcessToken); AdjustTokenPrivileges(hProcessToken, FALSE, &tp, 0, NULL, NULL); CloseHandle(hProcessToken);
程序右键:Run As Administrator(以管理员身份运行) OpenProcess返回正常
使用MS TechNET的专门提升exe权限的插件运行也能通过
问题: 如何是程序在运行期间自动提升权限?
请回答简明扼要,针对性强!
解决方案 »
- 光标控制
- 编写一个Win32 DLL文件,里面包含对话框,添加好对话框怎么把这个对话框文件保存到工程里面去?
- 批量查询页面的问题?
- 【版务】网友jiantiebiding恶意灌水
- 我的程序在运行几天后出现:<进程已经退出>产生了错误,会被Windows关闭,你需要重新启动程序。正在创建错误日志
- 紧急求救令,关于自动拓朴发现中cisco设备的发现*******一直在线。。。
- 用CAsyncSocket做服务器端应该如何接收数据?
- 这个小程序怎样实现??
- 散点分,欢迎朋友们进来聊聊天
- dll输出函数的问题!!!急急急
- 各位高手帮我看看~~我定义了一个列表控件,用的时候人家说找不到
- 一个C程序问题:输入一串字符,查找其中有多少个整数,并输出这些整数。
是在程序内部编码?
L"runas",
L"C:\\Windows\\Notepad.exe",
0, // params
0, // directory
SW_SHOWNORMAL);
Kenny Kerr 's <<Windows Vista for Developers>> 的 session "Run as administrator" 已阅
http://weblogs.asp.net/kennykerr/archive/2006/09/29/Windows-Vista-for-Developers-_1320_-Part-4-_1320_-User-Account-Control.aspx不过我还是有些不明白,ShellExecute 的确可以保证exe已提权方式运行,但是这个代码放在应用程序哪里可以提升自身程序的权限呢?
我只有一个程序,即程序启动后自动提升自己权限,而不是去新开另一个exe,如果把ShellExecute 放在程序初始化中,则必然进入一个死循环,反复不停的新开自己exe的进程。还请详细说明。ShellExecute Function msdn参考
http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx
<?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="x86" name="XXX.exe.manifest" //XXX应用程序名 type="win32"/> <description>Description of your application</description> <!-- Identify the application security requirements. --> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo></assembly>参考:
Vista UAC中把应用程序标注为“需要管理员权限”的四种方法
http://www.cnblogs.com/taoxu0903/archive/2007/09/07/885588.html
如何在 Visual Studio 2005 中可执行文件中嵌入清单文件
http://support.microsoft.com/kb/944276/zh-cn