我有一个程序,我用Java用Java编写,然后放入.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 Pro。 谢谢你的帮助!
答案 0 :(得分:9)
出于好奇,你的Windows版本是64位吗?
如果是,则必须在其他位置添加注册表项。我的UPS附带的UPS显示器出现了类似的问题。事实证明,如果您有64位Windows 7,则必须将启动注册表项放在此处:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \微软\的Windows \ CurrentVersion \运行
这对我来说就像一个魅力,一旦我开始与任何用户进行会话,就会出现恼人的UAC对话框。
答案 1 :(得分:0)
记录后代的陷阱-此位置应该起作用:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
但是根据我的经验,如果您使用的是BUILT-IN管理员帐户,则该帐户通常不起作用。
如果您使用不同的管理员帐户,则一切都应正常工作。
答案 2 :(得分:0)
通常是这样的。以管理权限打开cmd并在命令行上运行:
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