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

Vista下打开Aero效果后一些win32&nbsp;API好像不好用了,比如SetBkMode<br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=3669770
 
直接用Api读呢,也不行玛?
 
权限问题,在VISTA中选中程序然后鼠标右键————管理员权限打开就可以了。
 
to:sy0116<br>微软给我寄碟是因为我出了钱的啊,呵呵。<br>to:sy0116,lcj<br>Vista使用了全新的安全机制,如果在UAC开启的情况下,你对注册表的操作实际上被重新定向了,你可以将UAC关闭一下,应该正常.如果你实在要在UAC开启的情况下使用,可以下载一份INNOSETUP的源代码看看!<br>我有点不明白的,还请两位指教指教啊。<br>关闭UAC?怎么操作?我不是很明白UAC的概念的。
 
以Admin用户登录不等于以Admin用户运行,点右键击以管理员运行即可!
 
to:devilsniffer,leehq<br>你们所说的点右键击以管理员运行,我以前试过,是可以的。但是用户在打开的时候他是不会这样操作的,他就会直接点.exe而已的啊。
 
to:devilsniffer,leehq<br>你们所说的点右键击以管理员运行,我以前试过,是可以的。但是用户在打开的时候他是不会这样操作的,他就会直接点.exe而已的啊。
 
以前有一个API&nbsp;CreateProcessAsUser,还有CreateProcessAsUserW不知道在vista下能否用它来创建一个具有管理员权限的进程<br><br>关闭UAC还可以用这样一个命令,但要重启,在msconfig中有<br>C:/Windows/System32/cmd.exe&nbsp;/k&nbsp;%windir%/System32/reg.exe&nbsp;ADD&nbsp;HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/System&nbsp;/v&nbsp;EnableLUA&nbsp;/t&nbsp;REG_DWORD&nbsp;/d&nbsp;0&nbsp;/f
 
to:sy0116<br>多谢拉,我试了后再给各位答复。
 
to:各位兄台<br>不知道哪位能写个自动以管理员方式运行的程序来读取CPU消息,在此先行多谢拉!
 
我测试过了,启动UAC后确实不正常
 
to:sy0116<br>我刚给你发了个EMAIL,那是我写的以超级管理员的身份来登陆的,不知道你收到了没有?我在我这边测试了一下,好象是不可以的。<br>呵呵,我给你发的那个没有将<br>&nbsp;&nbsp;AUser&nbsp;:=&nbsp;'Administrator';<br>&nbsp;&nbsp;ADomain&nbsp;:=&nbsp;'Administrators';<br>&nbsp;&nbsp;APass&nbsp;:=&nbsp;'XXXX';<br>&nbsp;&nbsp;AExe&nbsp;:=&nbsp;'F:/Project1.exe';<br>加进去的。呵呵,不好意思哦
 
还没收到
 
在开启UAC的情况下CreateProcessAsUserW好像根本不能用,提示拒绝访问,还有我的Administrator是空密码
 
unit&nbsp;Unit1;<br><br>interface<br><br>uses<br>&nbsp;&nbsp;Windows,&nbsp;Messages,&nbsp;SysUtils,&nbsp;Classes,&nbsp;Graphics,&nbsp;Controls,&nbsp;Forms,&nbsp;Dialogs,<br>&nbsp;&nbsp;StdCtrls,shellapi,Registry;<br><br>type<br>&nbsp;&nbsp;TForm1&nbsp;=&nbsp;class(TForm)<br>&nbsp;&nbsp;&nbsp;&nbsp;Button1:&nbsp;TButton;<br>&nbsp;&nbsp;&nbsp;&nbsp;Edit1:&nbsp;TEdit;<br>&nbsp;&nbsp;&nbsp;&nbsp;Edit2:&nbsp;TEdit;<br>&nbsp;&nbsp;&nbsp;&nbsp;Edit3:&nbsp;TEdit;<br>&nbsp;&nbsp;&nbsp;&nbsp;Edit4:&nbsp;TEdit;<br>&nbsp;&nbsp;&nbsp;&nbsp;procedure&nbsp;Button1Click(Sender:&nbsp;TObject);<br>&nbsp;&nbsp;private<br>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;Private&nbsp;declarations&nbsp;}<br>&nbsp;&nbsp;public<br>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;Public&nbsp;declarations&nbsp;}<br>&nbsp;&nbsp;end;<br><br>&nbsp;&nbsp;type<br>&nbsp;&nbsp;_STARTUPINFOW&nbsp;=&nbsp;record<br>&nbsp;&nbsp;&nbsp;&nbsp;cb:&nbsp;DWORD;<br>&nbsp;&nbsp;&nbsp;&nbsp;lpReserved:&nbsp;LPWSTR;<br>&nbsp;&nbsp;&nbsp;&nbsp;lpDesktop:&nbsp;LPWSTR;<br>&nbsp;&nbsp;&nbsp;&nbsp;lpTitle:&nbsp;LPWSTR;<br>&nbsp;&nbsp;&nbsp;&nbsp;dwX:&nbsp;DWORD;<br>&nbsp;&nbsp;&nbsp;&nbsp;dwY:&nbsp;DWORD;<br>&nbsp;&nbsp;&nbsp;&nbsp;dwXSize:&nbsp;DWORD;<br>&nbsp;&nbsp;&nbsp;&nbsp;dwYSize:&nbsp;DWORD;<br>&nbsp;&nbsp;&nbsp;&nbsp;dwXCountChars:&nbsp;DWORD;<br>&nbsp;&nbsp;&nbsp;&nbsp;dwYCountChars:&nbsp;DWORD;<br>&nbsp;&nbsp;&nbsp;&nbsp;dwFillAttribute:&nbsp;DWORD;<br>&nbsp;&nbsp;&nbsp;&nbsp;dwFlags:&nbsp;DWORD;<br>&nbsp;&nbsp;&nbsp;&nbsp;wShowWindow:&nbsp;Word;<br>&nbsp;&nbsp;&nbsp;&nbsp;cbReserved2:&nbsp;Word;<br>&nbsp;&nbsp;&nbsp;&nbsp;lpReserved2:&nbsp;PByte;<br>&nbsp;&nbsp;&nbsp;&nbsp;hStdInput:&nbsp;THandle;<br>&nbsp;&nbsp;&nbsp;&nbsp;hStdOutput:&nbsp;THandle;<br>&nbsp;&nbsp;&nbsp;&nbsp;hStdError:&nbsp;THandle;<br>&nbsp;&nbsp;end;<br>&nbsp;&nbsp;STARTUPINFOW&nbsp;=&nbsp;_STARTUPINFOW;<br><br>var<br>&nbsp;&nbsp;Form1:&nbsp;TForm1;<br><br>implementation<br><br>{$R&nbsp;*.DFM}<br><br>function&nbsp;CreateProcessWithLogonW(lpUserName,&nbsp;lpDomain,&nbsp;lpPassword:&nbsp;LPCWSTR;<br>&nbsp;&nbsp;dwLogonFlags:&nbsp;DWORD;&nbsp;lpApplicationName:&nbsp;LPCWSTR;&nbsp;lpCommandLine:&nbsp;LPWSTR;<br>&nbsp;&nbsp;dwCreationFlags:&nbsp;DWORD;&nbsp;lpEnvironment:&nbsp;Pointer;&nbsp;lpCurrentDirectory:&nbsp;LPCWSTR;<br>&nbsp;&nbsp;const&nbsp;lpStartupInfo:&nbsp;STARTUPINFOW;&nbsp;var&nbsp;lpProcessInformation:&nbsp;PROCESS_INFORMATION):&nbsp;BOOL;&nbsp;stdcall;<br>&nbsp;&nbsp;external&nbsp;advapi32&nbsp;Name&nbsp;'CreateProcessWithLogonW'<br><br>procedure&nbsp;TForm1.Button1Click(Sender:&nbsp;TObject);<br>var<br>&nbsp;&nbsp;STARTUPINFO:&nbsp;StartupInfoW;<br>&nbsp;&nbsp;ProcessInfo:&nbsp;TProcessInformation;<br>&nbsp;&nbsp;AUser,&nbsp;ADomain,&nbsp;APass,&nbsp;AExe:&nbsp;WideString;<br>const<br>&nbsp;&nbsp;LOGON_WITH_PROFILE&nbsp;=&nbsp;$00000001;<br>&nbsp;&nbsp;LOGON_NETCREDENTIALS_ONLY&nbsp;=&nbsp;$00000002;<br>begin<br>&nbsp;&nbsp;FillChar(STARTUPINFO,&nbsp;SizeOf(StartupInfoW),&nbsp;#0);<br>&nbsp;&nbsp;STARTUPINFO.cb&nbsp;:=&nbsp;SizeOf(StartupInfoW);<br>&nbsp;&nbsp;STARTUPINFO.dwFlags&nbsp;:=&nbsp;STARTF_USESHOWWINDOW;<br>&nbsp;&nbsp;STARTUPINFO.wShowWindow&nbsp;:=&nbsp;SW_SHOW;<br>&nbsp;&nbsp;AUser&nbsp;:=&nbsp;'Administrator';<br>&nbsp;&nbsp;ADomain&nbsp;:=&nbsp;'Administrators';<br>&nbsp;&nbsp;APass&nbsp;:=&nbsp;'';<br>&nbsp;&nbsp;AExe&nbsp;:=&nbsp;'c:/Project1.exe';<br>&nbsp;&nbsp;if&nbsp;not&nbsp;CreateProcessWithLogonW(PWideChar(AUser),&nbsp;PWideChar(ADomain),<br>&nbsp;&nbsp;&nbsp;&nbsp;PWideChar(APass),<br>&nbsp;&nbsp;&nbsp;&nbsp;LOGON_WITH_PROFILE,&nbsp;nil,&nbsp;PWideChar(AExe),<br>&nbsp;&nbsp;&nbsp;&nbsp;NORMAL_PRIORITY_CLASS,&nbsp;nil,&nbsp;nil,&nbsp;STARTUPINFO,&nbsp;ProcessInfo)&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;RaiseLastWin32Error;<br>end;<br>end.<br><br>用这个代码好象也不能调用c:/project1.exe的。
 
将APass&nbsp;:=&nbsp;'';换成APass&nbsp;:=&nbsp;edit1.text;来输入PASSWORD不是提示密码错误就是提示我是空密码。
 
在关闭UAC的情况下,可以直接点击.exe来读取CPU信息。<br>Vista不论是否关闭UAC,CreateProcessAsUserW好象都不能用的,不是提示密码错误就是提示空密码的。<br>Xp下可以使用的。
 
连系统自己的runas命令都不能用,如果用runas命令来试图以管理员权限运行一个程序但管理员账号没有密码的话也会有相同的错误提示
 
是的,它提示超级管理员的密码是不能为空的,但是我们在建立用户的时候根本就没设置超级管理员的密码,不知道是怎么回事的。
 
哎,这个问题怎么就这么难结束呢。
 

Similar threads

回复
0
查看
855
不得闲
S
回复
0
查看
738
SUNSTONE的Delphi笔记
S
S
回复
0
查看
617
SUNSTONE的Delphi笔记
S
顶部