已知账户密码,如何后台提升用户权限运行程序? 由于某些需要,我运行一些程序时需要临时提升用户权限才可运行,但是又不想用RunAs那样还要人手输入密码的,请问如何可以后台赋给账户名和密码,然后实现权限提升来运行程序? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 if ( ( dwPid = GetProcessId( "WINLOGON.EXE" ) ) == NULL ) { printf( "GetProcessId() to failed!\n" ); bError = TRUE; goto Cleanup; } hProcess = OpenProcess( PROCESS_QUERY_INFORMATION, FALSE, dwPid ); if ( hProcess == NULL ) { printf( "OpenProcess() = %d\n", GetLastError() ); bError = TRUE; goto Cleanup; }我百度WSSRUN找的代码(我不全贴了,各位一百度就全部可以看到),走到hProcess = OpenProcess( PROCESS_QUERY_INFORMATION, FALSE, dwPid );就出问题了,hProcess 返回的是NULL值,是怎么回事?? OpenProcess WinLogon失败很正常,你先提升了Debug权限了之后就可以了 首先你当前的用户有提升用户权限的能力,比如你在User用户权限下,想把用户权限提升到管理员用户权限是不可能的.要想打开WinLogon进程,必须有管理员或者System权限才可以. 那为什么我的RunAs就可以呢??它唯一麻烦的地方就是要人手输入密码,我现在就是想让自己的其他帐户密码在后台已经给了它,使我可以实现类似:runas [username], [psw], [application path]来直接提升运行这个程序的权限…… runas是你给一个超级用户的用户名和密码,然后用这个用户的权限启动你的应用程序,所以你的程序相当于运行在指定的用户权限下. CreateProcessAsUser配合LogonUser就可以了。请仔细看看MSDN吧。 我编译的WSSRUN 就能用,你编译的不能用?给个连接,这是我以前编译的。代码网上一找一大把。http://download.csdn.net/source/1634199 if (!LogonUser("administrator", NULL, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &handleToken)) { DWORD err = GetLastError(); CString str; str.Format("LogonUser:%d", err); AfxMessageBox(str); } if (!ImpersonateLoggedOnUser(handleToken)) { DWORD err = GetLastError(); CString str; str.Format("ImpersonateLoggedOnUser:%d", err); AfxMessageBox(str); } CreateProcessAsUser(handleToken, "notepade.exe",NULL,NULL,NULL,NULL,NULL,NULL,NULL,&startInfo,&procInfo);启动程序时这样就可以了。 movefile 剪切文件的时候怎么覆盖目标文件夹下的同名的文件 https如何保持连接状态? OpenGl EnumProcesses这个函数用不了,怎么回事??? 请教关于页边距的问题 如何实现u盘中程序的自启动? 刚学编程,请问这个内存漏洞该怎么修改? CEdit的绘制 我在程序启动时所出现的封面如果关闭程序? 请问如何在不断变化的客户区绘制已不变的矩形框? 线程基础散分题 VC2008 如何让四台电脑互相联上?(不用MFC)
if ( ( dwPid = GetProcessId( "WINLOGON.EXE" ) ) == NULL )
{
printf( "GetProcessId() to failed!\n" ); bError = TRUE;
goto Cleanup;
} hProcess = OpenProcess( PROCESS_QUERY_INFORMATION, FALSE, dwPid );
if ( hProcess == NULL )
{
printf( "OpenProcess() = %d\n", GetLastError() ); bError = TRUE;
goto Cleanup;
}我百度WSSRUN找的代码(我不全贴了,各位一百度就全部可以看到),走到
hProcess = OpenProcess( PROCESS_QUERY_INFORMATION, FALSE, dwPid );
就出问题了,hProcess 返回的是NULL值,是怎么回事??
runas [username], [psw], [application path]
来直接提升运行这个程序的权限……
runas是你给一个超级用户的用户名和密码,然后用这个用户的权限启动你的应用程序,所以你的程序相当于运行在指定的用户权限下.
请仔细看看MSDN吧。
NULL,
password,
LOGON32_LOGON_INTERACTIVE,
LOGON32_PROVIDER_DEFAULT,
&handleToken))
{
DWORD err = GetLastError();
CString str;
str.Format("LogonUser:%d", err);
AfxMessageBox(str);
} if (!ImpersonateLoggedOnUser(handleToken))
{
DWORD err = GetLastError();
CString str;
str.Format("ImpersonateLoggedOnUser:%d", err);
AfxMessageBox(str);
}
启动程序时这样就可以了。