使用RegEdit在启动时以管理员身份运行一个.exe文件

5
我有一个用Java在Eclipse中编写的程序,然后将其放入.jar文件中。接着,我使用launch4j从我的.jar文件制作可执行文件,并包含.manifest文件以使可执行文件以管理员权限运行。我将可执行文件放在C:\文件夹下,路径为C:\Prog_1.exe。接着,我进入regEdit,在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run下添加了一个字符串条目,值名为Prog_1,值为C:\Prog_1.exe。
我的问题是,如果我单击可执行文件,它似乎能正常运行......弹出小警告框询问是否要运行该程序,我点击“是”,它会按照我期望的那样工作。然而,如果我重新启动系统,由于我对注册表所做的修改,我希望该程序在启动时运行,但现在并没有发生这种情况。没有弹出任何警告框询问是否要运行该程序,并且代码未被执行。我错过了什么?
另外,我还尝试将可执行文件添加到启动文件夹中,但也无法使其在启动时运行。
需要说明的是,我正在运行Windows 7 Professional。
谢谢您的帮助!

为什么要用regedit的方式呢?你不能直接把可执行文件放在启动文件夹里吗? - Pavan Manjunath
2个原因:第一个是将可执行文件放入启动文件夹与使用regedit方法一样无效。第二个原因主要是出于个人好奇心,想知道如何使用regedit实现这一点。 - Gossamer Shadow
2
可能是重复的问题:如何在Windows启动时自动以管理员身份运行程序? - Raymond Chen
我曾经遇到过同样的问题。JAR本身在自动启动时运行良好,但是当我用launch4j将其封装起来以具有管理员权限可执行文件时,它就不能再自动启动了。所以我猜测这与launch4j有关。你找到解决方案了吗? - mr.T
3个回答

13

仅出于好奇,您的Windows版本是64位的吗?

如果是的话,那么您必须将注册表项添加到不同的位置。我曾经遇到过类似的问题,我的UPS配有监视器。原来,在64位Windows 7上,您必须将启动注册表键放在这里:

 

HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Run

对我来说,这起了很大作用,而且只要我与任何用户开始会话,烦人的UAC对话框就会出现。


2
有没有办法将可执行文件加入白名单,使其在 UAC 弹出时无需提示? - AaronLight
天哪!经过数月的探索...这个 Wow6432Node 救了我!非常感谢你! - thevoipman

2

通常情况下,操作如下。以管理员权限打开命令提示符并在命令行上运行:

REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /V "Prog_1" /t REG_SZ /F /D "%homedrive%\Prog_1.exe"

或者在一些Win x64系统上:

REG ADD "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run" /V "Prog_1" /t REG_SZ /F /D "%homedrive%\Prog_1.exe"

同时,要删除注册表键:

REG DELETE "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /V "Prog_1" /F

或者在一些Win x64系统上:

REG DELETE "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run" /V "Prog_1" /F

0

为了记录一个小技巧,这个位置应该可以工作:

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

但是根据我的经验,如果你使用的是内置管理员账户,它经常不起作用。

如果你使用一个不同的管理员账户,一切都应该正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接