2011-11-15 16 views
1

就在最近,我已经开始使用Microsoft Visual Basic 2010 Express,并且正在创建一个将URL加载到浏览器组件的应用程序。启动文件夹中的快捷方式不会加载Visual Basic应用程序的正确设置

用户可以配置的其中一个设置是'在Windows启动时启动应用程序'。当此复选框被选中并且用户保存他的首选项时,我会在Microsoft启动文件夹中创建一个快捷方式,以便在Windows启动时运行该应用程序。

我这样做使用下面的代码:

My.Computer.Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True).SetValue(Application.ProductName, Application.ExecutablePath) 
Dim startup As String = Environment.GetFolderPath(Environment.SpecialFolder.Startup) 
IO.File.Copy(Application.ExecutablePath, startup & "\ApplicationName.exe") 

的问题是,比我使用了Visual Basic使上安装,位于桌面或开始菜单programfolder快捷方式,它加载设置由用户定义。但是当启动文件夹的快捷方式运行时,它会加载一个完全“新”的应用程序类型,并且所有的设置都是默认的。

任何知道我可能会做错什么的人?我已经搜索了互联网很多,也看着像copying app shortcut to startup folder VB(这对我不起作用)StackOverflow主题

任何帮助将不胜感激。如果您需要更多信息,请询问,我会尽快查找。

回答

1

您并未创建快捷方式,您正在将可执行文件复制到启动文件夹! 这个复制的可执行文件不会在它附近找到一个配置文件,所以它会创建一个新的!这就是为什么它显示的默认值.. 做一个快捷方式导入从“COM”选项卡中的“Windows脚本宿主对象模型”,在项目 - > refrences->添加...

Dim oShell As IWshRuntimeLibrary.WshShell 
Dim oShortCut As IWshRuntimeLibrary.WshShortcut 

oShell = New IWshRuntimeLibrary.WshShell 
oShortCut = oShell.CreateShortcut(Environment.GetFolderPath(Environment.SpecialFolder.Startup) & _ 
                "\" & GetFileName(Application.ExecutablePath) & ".lnk") 
Dim s = Environment.GetFolderPath(Environment.SpecialFolder.Startup) 
With oShortCut 
    .TargetPath = Application.ExecutablePath 
    .Arguments = "" 
    .WorkingDirectory = GetDirectoryName(Application.ExecutablePath) 
End With 
oShortCut.Save() 
oShortCut = Nothing : oShell = Nothing 
+0

感谢您的快速回复!我明天会先试一试,并告诉你它是否对我有用,或者如果我仍然有问题。 –

+0

要注意一件事:将值添加到注册表中,并将快捷方式添加到启动文件夹将使应用程序在系统启动时启动两次! – UnLoCo

+0

啊,这是合乎逻辑的。我只会将它添加到启动文件夹中,而不是在注册表中。这是一个简单的方法,可以解决问题。再次感谢! –

相关问题