已知账户密码,如何后台提升用户权限运行程序?

小疮子 2009-08-31 12:06:59
由于某些需要,我运行一些程序时需要临时提升用户权限才可运行,但是又不想用RunAs那样还要人手输入密码的,请问如何可以后台赋给账户名和密码,然后实现权限提升来运行程序?
...全文
347 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
WFORLS 2009-09-05
  • 打赏
  • 举报
回复
偶是菜鸟,飘过学习
NTooL 2009-09-05
  • 打赏
  • 举报
回复
CreateProcessAsUser(handleToken, "notepade.exe",NULL,NULL,NULL,NULL,NULL,NULL,NULL,&startInfo,&procInfo);
启动程序时这样就可以了。
NTooL 2009-09-05
  • 打赏
  • 举报
回复
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);
}
wangqiangcc 2009-09-05
  • 打赏
  • 举报
回复
我编译的WSSRUN 就能用,你编译的不能用?

给个连接,这是我以前编译的。代码网上一找一大把。

http://download.csdn.net/source/1634199
wangk 2009-09-03
  • 打赏
  • 举报
回复
CreateProcessAsUser配合LogonUser就可以了。
请仔细看看MSDN吧。
小疮子 2009-09-03
  • 打赏
  • 举报
回复
= =!
/.\
小疮子 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 skybblue 的回复:]
引用 10 楼 nevesly 的回复:
引用 9 楼 skybblue 的回复:
首先你当前的用户有提升用户权限的能力,比如你在User用户权限下,想把用户权限提升到管理员用户权限是不可能的.要想打开WinLogon进程,必须有管理员或者System权限才可以.

那为什么我的RunAs就可以呢??它唯一麻烦的地方就是要人手输入密码,我现在就是想让自己的其他帐户密码在后台已经给了它,使我可以实现类似:
runas [username], [psw], [application path]
来直接提升运行这个程序的权限……


runas是你给一个超级用户的用户名和密码,然后用这个用户的权限启动你的应用程序,所以你的程序相当于运行在指定的用户权限下.
[/Quote]

我的目的就是要这样啊,用户名密码我都知道的,我就是想略过要人手输入密码那部分啊……
是我表达问题吗??
skybblue 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 nevesly 的回复:]
引用 9 楼 skybblue 的回复:
首先你当前的用户有提升用户权限的能力,比如你在User用户权限下,想把用户权限提升到管理员用户权限是不可能的.要想打开WinLogon进程,必须有管理员或者System权限才可以.

那为什么我的RunAs就可以呢??它唯一麻烦的地方就是要人手输入密码,我现在就是想让自己的其他帐户密码在后台已经给了它,使我可以实现类似:
runas [username], [psw], [application path]
来直接提升运行这个程序的权限……
[/Quote]

runas是你给一个超级用户的用户名和密码,然后用这个用户的权限启动你的应用程序,所以你的程序相当于运行在指定的用户权限下.
小疮子 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 skybblue 的回复:]
首先你当前的用户有提升用户权限的能力,比如你在User用户权限下,想把用户权限提升到管理员用户权限是不可能的.要想打开WinLogon进程,必须有管理员或者System权限才可以.
[/Quote]
那为什么我的RunAs就可以呢??它唯一麻烦的地方就是要人手输入密码,我现在就是想让自己的其他帐户密码在后台已经给了它,使我可以实现类似:
runas [username], [psw], [application path]
来直接提升运行这个程序的权限……
skybblue 2009-09-02
  • 打赏
  • 举报
回复
首先你当前的用户有提升用户权限的能力,比如你在User用户权限下,想把用户权限提升到管理员用户权限是不可能的.要想打开WinLogon进程,必须有管理员或者System权限才可以.
小疮子 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 tr0j4n 的回复:]
OpenProcess WinLogon失败很正常,你先提升了Debug权限了之后就可以了
[/Quote]
有例子吗??
jyh_baoding 2009-09-01
  • 打赏
  • 举报
回复
UNIX可以,WINDOWS不知道
MoXiaoRab 2009-09-01
  • 打赏
  • 举报
回复
OpenProcess WinLogon失败很正常,你先提升了Debug权限了之后就可以了
小疮子 2009-09-01
  • 打赏
  • 举报
回复
人呢??
小疮子 2009-08-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 neohope 的回复:]
要看你的操作系统的
[/Quote]

XP SP3
neohope 2009-08-31
  • 打赏
  • 举报
回复
要看你的操作系统的
小疮子 2009-08-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dnybz 的回复:]
wssrun 就可以
[/Quote]

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值,是怎么回事??
wangqiangcc 2009-08-31
  • 打赏
  • 举报
回复
wssrun 就可以

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧