Vista下如何操作注册表 ( 积分: 20 )

  • 主题发起人 主题发起人 zzyun
  • 开始时间 开始时间
还没有结帖啊,<br>我说&quot;以Admin用户登录不等于以Admin用户运行,点右键击以管理员运行即可!&nbsp;&nbsp;&quot;<br>你就没有试一试!
 
to:leehq<br>兄弟啊,这种方法是不行的哦。人家客户希望的是直接双击.exe文件就可以运行的,而不是点右键击以管理员运行的。
 
delphi2007好像支持vista,里面应该有方法,还是等些日子吧
 
呵呵,不知道要等到啥时候去啊。
 
不知道什么时候能结帖的。呵呵
 
Vista&nbsp;下双击运行程序默认是以标准普通用户身份运行的,可以加资源编译到程序中,会自动提示用户确认程序提升权限的请求,资源文件内容如下:<br>&lt;?xml&nbsp;version=&quot;1.0&quot;&nbsp;encoding=&quot;utf-8&quot;&nbsp;?&gt;<br>&lt;assembly&nbsp;xmlns=&quot;urn:schemas-microsoft-com:asm.v1&quot;&nbsp;manifestVersion=&quot;1.0&quot;&gt;<br>&lt;assemblyIdentity&nbsp;version=&quot;1.0.0.0&quot;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;processorArchitecture=&quot;X86&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;name=&quot;Vista&nbsp;UAC&nbsp;Compat.Application&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;type=&quot;win32&quot;&nbsp;/&gt;&nbsp;<br>&nbsp;&nbsp;&lt;description&gt;WindowsVistaReadiness&nbsp;Application&lt;/description&gt;<br>&nbsp;&nbsp;&lt;trustInfo&nbsp;xmlns=&quot;urn:schemas-microsoft-com:asm.v3&quot;&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;security&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;requestedPrivileges&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;requestedExecutionLevel&nbsp;level=&quot;requireAdministrator&quot;&nbsp;&nbsp;/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/requestedPrivileges&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/security&gt;<br>&nbsp;&nbsp;&lt;/trustInfo&gt;<br>&lt;/assembly&gt;
 
to:BeyondStudio<br>兄台,你给的资源文件怎么加到代码中?呵呵,小弟不才,还请多多指教。
 
BeyondStudio的应该是个xpmainfast文件吧
 
to:各位兄台<br>小弟不才,BeyondStudio给的那个文件怎么加到代码中去?<br>该代码只需要读取VISTA下CPU的消息即可,哪位大虾可以提供代码?
 
to:BeyondStudio<br>你给的那资源文件好象是针对VC2005的,网址是http://blog.csdn.net/shenghuafen/archive/2006/12/19/1449216.aspx<br>不知道有没有针对Delphi的?
 
今天晚上突然想起一件事,改了一丁点东西,竟然可以了<br>function&nbsp;getcpu:PChar;stdcall;<br>var<br>&nbsp;&nbsp;reg:HKEY;<br>&nbsp;&nbsp;size:PDWORD;<br>&nbsp;&nbsp;info:PByte;<br>begin<br>&nbsp;&nbsp;GetMem(info,64);<br>&nbsp;&nbsp;GetMem(size,SizeOf(pdword));<br>&nbsp;&nbsp;size^:=64;<br>&nbsp;&nbsp;RegOpenKeyEx(HKEY_LOCAL_MACHINE,PChar('HARDWARE/DESCRIPTION/System/CentralProcessor/0'),0,KEY_QUERY_VALUE,reg);<br>&nbsp;&nbsp;RegQueryValueEx(reg,PChar('ProcessorNameString'),nil,nil,Pbyte(info),@Size);<br>&nbsp;&nbsp;Result:=PChar(info);<br>&nbsp;&nbsp;RegCloseKey(reg);<br>end;<br><br>procedure&nbsp;TForm1.Button1Click(Sender:&nbsp;TObject);<br>begin<br>&nbsp;&nbsp;ShowMessage(getcpu);<br>end;
 
如果嫌编译资源文件麻烦,BeyondStudio给的xml文件可以这么用:<br>1。保存这些内容到一个文本文件。<br>2。修改文本文件的文件名为:&nbsp;YouExeName.exe.manifest&nbsp;注意.exe不能去掉<br>3。把这个文件和你的exe文件放在同一个目录下,这样运行你的exe文件时会自动解析进这个xml文件。
 
to:sy0116<br>兄弟,你给的那段代码确实可以读出VISTA的CPU名字,但是在2K,XP下好象有点问题的,在2K,XP下如果多次点击那个。EXE&nbsp;文件会报错。<br>to:sy0116&nbsp;ufo!<br>我是这样操作的,首先将那段代码保存在一个.txt中,然后将文件名字改为project1.exe.manifest,同时将这两个文件保存在一个文件夹中,在VISTA上测试的时候好象还是不行的。呵呵
 
to:sy0116<br>RegOpenKeyEx&nbsp;and&nbsp;RegQueryValueEx函数的参数我改了几个好象在2K,XP下还是会报错的。呵呵
 
vista还没用过,听说有很多毛病,&nbsp;不只是不是真的
 
简单一点的,先判断一下操作系统版本,根据不同的操作系统版本选择运行不同的代码好了。
 
呵呵,如果说能只用一段代码在不同的OS上运行那还是要好很多的啊。
 
呵呵,讨论还真热烈,应该是权限问题,虽然这个键我没读过,但vista下注册表的其它键倒是读取过,只要run&nbsp;as&nbsp;administrator就可以了,另外,上面说的那个manifest文件确实对delphi无效,目前我也正在苦脑如何提升权限,而不需要用户刻意&quot;run&nbsp;as&nbsp;administrator&quot;
 
那个manifest对delphi是有效的啊,我测试过的<br>我还有一个想法:把自己的代码注入到系统进程,比如winlogo.exe然后再读写注册表就应该可以了,但是我只会注入到explorer.exe等进程中,不知道如何才能注入到svchost,winlogon等进程
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
812
SUNSTONE的Delphi笔记
S
S
回复
0
查看
718
SUNSTONE的Delphi笔记
S
后退
顶部