vista下ocx怎么自动注册? 在vista环境下用shellAPI,运行regsvr命令发现ocx不能注册,vista必须要设置“关闭UAC用户帐户控制方法”才能注册。能否不需要用这个方法就能注册ocx呢?不知道大家是怎么做的,请指点! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 目前为止也只有这个办法,当然也可以用Shellexecute指定管理员身份运行cmd,然后执行注册命令。 Shellexecute 需要“关闭UAC用户帐户控制”吗? 我只知道类似这样的用法:ShellExecute(Handle, nil, 'regsvr32.exe', 'flash.ocx', nil, SW_SHOWNORMAL);gyk120能否告诉具体怎么做? 我的意思是Shellexecute指定管理员身份运行Cmd,在cmd当中输入命令注册ShellExecute(0, // owner window L"runas", L"C:\\Windows\\cmd.exe", 0, // params 0, // directory SW_SHOWNORMAL); 但在vista下,直接cmd运行regsvr32 "d:\flash.ocx" 命令都是不行的呀。必须关闭UAC才行,在程序中运行cmd命令可以?我试试吧。 cmd需要管理员权限运行才能注册成功,上面是个提权的代码,以管理员身份运行程序 gyk120兄弟: S := '"' + ExtractFilePath(ParamStr(0)) + flash.ocx"'; ShellExecute(0, 'runas', 'C:\Windows\System32\cmd.exe ', PChar(' /C regsvr32.exe ' + S), nil, SW_SHOWNORMAL); 请指教哪里错了,这样会报loadlibrary错误。 直接LoadLibrary那个OCX,然后调用其中的DllRegisterService就ok了。 ccrun: 你的方法我测试了,只能在XP下是可行的,在vista不可以的。 gyk120:还在线吗?我刚才是参考http://www.vista123.com/html/5189.html,不知道哪里做的有问题? S := ' " ' + ExtractFilePath(ParamStr(0)) + flash.ocx" '; ShellExecute(0, 'runas', 'C:\Windows\System32\cmd.exe ', PChar(' /C regsvr32.exe ' + S), nil, SW_SHOWNORMAL); 测试发现竟然还有这样:在vista上述程序是可以执行的,但在XP下是报错的,开发环境是XP。真让我哭笑不得。 实在不行就用这个方法(转):操作步骤如下: 1.建立 res 文件 建立一个文本文件,名字可以自己起,我这里叫:UAC.manifest,内容: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator"/> </requestedPrivileges> </security> </trustInfo> </assembly>建立文本文件,名为 UAC.rc,内容: 1 24 UAC.manifest 编译成 uac.res 文件,运行: brcc32 uac.rc -fouac.res 2.在代码中引入 打开项目文件,加入 {$R uac.res} 3.编译程序 这时程序就支持 VISTA 了,在运行的时候,会弹出 WINDOWS 的提示框,询问用户是否允许以管理员身份运行。我验证过这个方法可行,但每次都会弹出提示框,能否只提示一次,以后都按照管理员身份运行呢? 那个S的赋值好像有点问题,其他的我就看不出来了你把PChar(' /C regsvr32.exe ' + S)这一行单独写成一行试试,还有运行时候报什么错?不能loadlibrary还是loadlibrary出现读取错误楼上那也是个办法,不过XP下兼容性好像不怎么好 xp下loadlibrary出现错误,vista正确的,可以进行注册。 看来还是这个问题……至今为止有三种方法,都是Vista下可以成功运行,XP下报错,要解决的话恐怕要麻烦点,先获得Windows版本号,根据XP和Vista采用不同的方法,或者开发一个for XP和for Vista两个版本的 呵呵,gyk120我现在就是这么做的,谢谢你的指导! XP下应该是由于Shell32.dll当中的某些函数储存位置变了,地址不同,调用的时候找不到 謝謝在windows\system32\CMD.EXE 以管理員權限運行後,運行 regsvr32 D:\OVFW.OCX成功了,圖像也出來了。哈哈 引用其他窗体控件内容问题 delphi 字符串转换日期 delphi中for语句用法 datetimepicker问题!谢谢 请问在SQL SERVER中有没有和ORACLE中decode函数功能相同的函数? 哪位大师能给我一个用delphi或c语言实现的生产者-消费者问题的源程序? 求购一个Smtp控件 一个关于DBGrid的问题,请高手指教! 请各位推荐用delphi学习编Com/Dcom组件的好书 为什么我那么忧伤,全是为了delphi的不争气,请解我忧? 求购《delphi 6 开发人员指南》 年底了有找delphi工作的吗?
ShellExecute(Handle, nil, 'regsvr32.exe', 'flash.ocx', nil, SW_SHOWNORMAL);gyk120能否告诉具体怎么做?
ShellExecute(0, // owner window
L"runas",
L"C:\\Windows\\cmd.exe",
0, // params
0, // directory
SW_SHOWNORMAL);
S := '"' + ExtractFilePath(ParamStr(0)) + flash.ocx"';
ShellExecute(0, 'runas', 'C:\Windows\System32\cmd.exe ', PChar(' /C regsvr32.exe ' + S), nil, SW_SHOWNORMAL);
请指教哪里错了,这样会报loadlibrary错误。
我刚才是参考http://www.vista123.com/html/5189.html,不知道哪里做的有问题? S := ' " ' + ExtractFilePath(ParamStr(0)) + flash.ocx" ';
ShellExecute(0, 'runas', 'C:\Windows\System32\cmd.exe ', PChar(' /C regsvr32.exe ' + S), nil, SW_SHOWNORMAL);
在vista上述程序是可以执行的,但在XP下是报错的,开发环境是XP。
真让我哭笑不得。
操作步骤如下:
1.建立 res 文件
建立一个文本文件,名字可以自己起,我这里叫:UAC.manifest,内容:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>建立文本文件,名为 UAC.rc,内容:
1 24 UAC.manifest
编译成 uac.res 文件,运行:
brcc32 uac.rc -fouac.res
2.在代码中引入
打开项目文件,加入
{$R uac.res}
3.编译程序
这时程序就支持 VISTA 了,在运行的时候,会弹出 WINDOWS 的提示框,询问用户是否允许以管理员身份运行。我验证过这个方法可行,但每次都会弹出提示框,能否只提示一次,以后都按照管理员身份运行呢?
你把PChar(' /C regsvr32.exe ' + S)这一行单独写成一行试试,还有运行时候报什么错?不能loadlibrary还是loadlibrary出现读取错误
楼上那也是个办法,不过XP下兼容性好像不怎么好
至今为止有三种方法,都是Vista下可以成功运行,XP下报错,要解决的话恐怕要麻烦点,先获得Windows版本号,根据XP和Vista采用不同的方法,或者开发一个for XP和for Vista两个版本的
在windows\system32\CMD.EXE 以管理員權限運行後,運行 regsvr32 D:\OVFW.OCX
成功了,圖像也出來了。哈哈