如何以SYSTEM权限运行某个函数? delphi 7.0的程序,某个函数必须以system权限运行,有没有简单点的办法? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 分数加到120 谁能给个例子啊 我对api编程不怎么熟悉的 也可以发到我邮箱里去[email protected] Windows服务程序是可以指定运行程序的权限的除了CreateProcessAsUser,还有一个API是CreateProcessWithLogon,供参考 要是具体的函数,还是用SYSTEM权限下的服务交互来调用而整个进程则可以使用修改EPROCESS结构的TOKEN实现 修改EPROCESS结构的TOKEN实现以任何一个存在的用户权限执行俺不是说了??靠~做这个需要编写驱动程序的,用DDK写 http://www.nsfocus.net/index.php?act=magazine&do=view&mid=1900这是绿盟上的大虾写的文章,谁能帮忙把sysproc_now.c改成delphi的啊?教教小弟怎么在DELPHI 7.0里调用也可以 这里只是提供你一个思路或帮你完善下代码,自己google一下吧,代码1大堆 其实http://www.nsfocus.net/index.php?act=magazine&do=view&mid=1900这个程序可以直接拿来用的, 用VC编译好以后生成命令行程序然后在你程序里面用shellexecute或者winexec调用即可winexec('sysadmin yourprog.exe',sw_hide) 楼上的能把程序改成DELPI的么,或者DLL的形式也行,实在不行就帮忙编译个EXE文件吧,我对C++是一窍不通啊,编译器也没有. 安装个VC,创建一个window console application ,把上面的代码copy进去就可以直接编译了 (我这边生成sysadmin.exe)刚刚调试过了,代码没有问题sysadmin regedit.exe 运行后可以看到注册表里面的sam数据 楼上的兄弟,能编译成DLL的形式么?还有个问题,用EXE文件调用EXE的形式太绕圈了,能不能用DLL的形式,直接在我程序里调用某个函数,让函数以SYSTEM权限运行? 能把EXE和DLL文件给我发一份么? 参考代码//激活或者停止指定的权限function EnabledDebugPrivilege(const bEnabled: Boolean):Boolean;var hToken: THandle; tp: TOKEN_PRIVILEGES; a: DWORD;const SE_DEBUG_NAME = 'SeDebugPrivilege';begin Result:=False; //打开当前Process的令牌(我一直叫Token为令牌) if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken)) then begin //调整令牌的权限,也就是加上或者取消调试权限(SE_DEBUG_NAME) tp.PrivilegeCount :=1; LookupPrivilegeValue(nil,SE_DEBUG_NAME ,tp.Privileges[0].Luid); if bEnabled then tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED else tp.Privileges[0].Attributes := 0; a:=0; AdjustTokenPrivileges(hToken,False,tp,SizeOf(tp),nil,a); Result:= GetLastError = ERROR_SUCCESS; CloseHandle(hToken); end;end; please refer to your email CreateProcessAsUser最多是Admin权限,是不行的.服务, 远线程都可以. 也可以用有SYSTEM权限的程序来调用你程序 naughtyboy 你的邮件收到了 在我的机器上无法运行啊,显示version 5.1 AdjustTokenPrivileges() failed: 并非所有被引用的特权都指派给呼叫方。OpenProcess() failed: 拒绝访问。AdjustTokenPrivileges() failed: 并非所有被引用的特权都指派给呼叫方。 jzcdelphi 我调用你的代码 怎么返回false呢?老是不成功 jzcdelphi 你的代码只对NT 2000好用吧 我在XPSP2上运行总是FALSE 我想这个和你本地系统的安全策略有关系try following"开始"-"设置"-"控制面板"-"管理工具"-"本地安全策略"-"本地策略"-"用户权利指派"-"调试程序"把"调试程序"策略指派给你用户所在的组,如"Administrators" 如果是英文版的操作系统Start-Settings-Control Panel-Administrative Tools-Local Security Policy-Local Policies-User Rigthts Assignment-Debug Programs 如何把网页的验证码显示在窗体上 油评,为西安石先生喝彩 idHttpServer 中处理FastReport的问题,严重期待解决 北大青鸟APTECH值得学吗 急急急急急急急——关于回调函数传递参数的问题。 TScrollBox 和 TColorGrid在哪个面板上? 大流量和大容量的问题 (二)debussy :请你来领分! ************* 难!难!难! ******************* 请问这句sql在access中如何写 wise installation 如何添加自述文件 TImgEdit控件上放透明Panel
除了CreateProcessAsUser,还有一个API是CreateProcessWithLogon,供参考
而整个进程则可以使用修改EPROCESS结构的TOKEN实现
靠~做这个需要编写驱动程序的,用DDK写
这是绿盟上的大虾写的文章,谁能帮忙把sysproc_now.c改成delphi的啊?
教教小弟怎么在DELPHI 7.0里调用也可以
这个程序可以直接拿来用的, 用VC编译好以后生成命令行程序
然后在你程序里面用shellexecute或者winexec调用即可
winexec('sysadmin yourprog.exe',sw_hide)
把上面的代码copy进去就可以直接编译了 (我这边生成sysadmin.exe)
刚刚调试过了,代码没有问题
sysadmin regedit.exe 运行后可以看到注册表里面的sam数据
还有个问题,用EXE文件调用EXE的形式太绕圈了,能不能用DLL的形式,直接在我程序里调用某个函数,让函数以SYSTEM权限运行?
//激活或者停止指定的权限
function EnabledDebugPrivilege(const bEnabled: Boolean):Boolean;
var
hToken: THandle;
tp: TOKEN_PRIVILEGES;
a: DWORD;
const
SE_DEBUG_NAME = 'SeDebugPrivilege';
begin
Result:=False;
//打开当前Process的令牌(我一直叫Token为令牌)
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken)) then
begin
//调整令牌的权限,也就是加上或者取消调试权限(SE_DEBUG_NAME)
tp.PrivilegeCount :=1;
LookupPrivilegeValue(nil,SE_DEBUG_NAME ,tp.Privileges[0].Luid);
if bEnabled then
tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
else
tp.Privileges[0].Attributes := 0;
a:=0;
AdjustTokenPrivileges(hToken,False,tp,SizeOf(tp),nil,a);
Result:= GetLastError = ERROR_SUCCESS;
CloseHandle(hToken);
end;
end;
服务, 远线程都可以. 也可以用有SYSTEM权限的程序来调用你程序
version 5.1
AdjustTokenPrivileges() failed: 并非所有被引用的特权都指派给呼叫方。
OpenProcess() failed: 拒绝访问。
AdjustTokenPrivileges() failed: 并非所有被引用的特权都指派给呼叫方。
try following
"开始"-"设置"-"控制面板"-"管理工具"-"本地安全策略"-"本地策略"-"用户权利指派"-"调试程序"
把"调试程序"策略指派给你用户所在的组,如"Administrators" 如果是英文版的操作系统
Start-Settings-Control Panel-Administrative Tools-Local Security Policy-Local Policies-User Rigthts Assignment-Debug Programs