导航
  • 主页
  • VC/MVC基础类
  • .NET 技术
  • VC/MFC界面
  • VC/MFC 进程
  • VC/MFC 数据库
  • VC/MFC&Web
  • Doc/View
  • VC++技术资源

如何以某一用户身份运行程序

mojun009 2002-07-23 01:46:34
在程序进程内,通过编程实现以某一用户身份,来运行此程序。

小弟急用!望不吝赐教!谢谢!
...全文
10 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
masterz 2002-07-28
In Windows 2000, the process calling LogonUser requires the SE_TCB_NAME privilege.
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q132958&
回复
masterz 2002-07-28
LogonUser is some what complicated. so I suggest you to use CreateProcessWithLogonW. see the following code snippet.
#define _UNICODE
#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <stdio.h>
#include <stddef.h>
#include <ntsecapi.h>
int main()
{
SECURITY_ATTRIBUTES sa;
STARTUPINFOW si;
PROCESS_INFORMATION pi;
bool add_privilege =true;
ZeroMemory(&sa, sizeof(sa));
sa.nLength = sizeof(sa);
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
LPCWSTR UName;
LPCWSTR Domain;
LPCWSTR PW;
LPWSTR Command;
UName=L"masterz";
Domain=L"";//my computer is not in any domain
PW=L"*";
Command=L"notepad.EXE";
if (!CreateProcessWithLogonW(UName,Domain, PW ,
LOGON_WITH_PROFILE , NULL,Command,NULL,NULL,NULL,&si,&pi))
{
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default languag=
(LPTSTR) &lpMsgBuf, 0, NULL);
MessageBox( NULL, (LPTSTR)lpMsgBuf, NULL, MB_OK |
MB_ICONINFORMATION );
// Free the buffer.
LocalFree( lpMsgBuf );
}
else
{
}
return 0;
}
回复
mojun009 2002-07-27
最好有原码!!我自己编写的程序总是有错误,LogonUser总是不成功,不知道生么原因!
回复
mojun009 2002-07-27
编写一个程序,在程序初始化的时候调用ImpersonateLoggedOnUser来模拟一个用户(不是administrator),程序推出的时候。在还原回去!
回复
yy23rock 2002-07-23
用COMMANDLINEINFO
把你的问题在具体点吧!
回复
masterz 2002-07-23
look up ImpersonateLoggedOnUser and CreateProcessAsUser
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告