Run at startup using scheduled tasks
-
Hiya everyone, Quick question: Is there any way to add a scheduled task (using windows api) without using COM? I want to make my application start on user logon and UAC on Vista stops me from adding the appropriate registry value. I've done a few quick searches, but google has yet to yield anything. Thanks. :)
-
Hiya everyone, Quick question: Is there any way to add a scheduled task (using windows api) without using COM? I want to make my application start on user logon and UAC on Vista stops me from adding the appropriate registry value. I've done a few quick searches, but google has yet to yield anything. Thanks. :)
The Windows Task Scheduler is exposed to applications only via COM interfaces. To add to the run registry keys, you have to be an administrator. But I'm not sure if you need admin previleges to create a shortcut in the StartUp folder. The statup folder is at
C:\Users\\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
.«_Superman_» I love work. It gives me something to do between weekends.
Microsoft MVP (Visual C++) -
The Windows Task Scheduler is exposed to applications only via COM interfaces. To add to the run registry keys, you have to be an administrator. But I'm not sure if you need admin previleges to create a shortcut in the StartUp folder. The statup folder is at
C:\Users\\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
.«_Superman_» I love work. It gives me something to do between weekends.
Microsoft MVP (Visual C++) -
Thanks for the reply, but...I don't see to have a C:\Users folder. :confused: I've never seen that folder either. Is there any other way to make an app run on startup without having admin privileges?
Go to
Start -> Programs -> StartUp
, right click on it and selectExplore
. You will now be able to see the path for theStartUp
folder. You can use the SHGetSpecialFolderLocation[^] API and give the nFolder parameter as CSIDL_STARTUP.«_Superman_» I love work. It gives me something to do between weekends.
Microsoft MVP (Visual C++) -
Hiya everyone, Quick question: Is there any way to add a scheduled task (using windows api) without using COM? I want to make my application start on user logon and UAC on Vista stops me from adding the appropriate registry value. I've done a few quick searches, but google has yet to yield anything. Thanks. :)
A regular user should not be able to force another user to execute some of his code, and Vista has been the first Windows version to enforce this: regular users can't access someone else's private folders (such as StartUp), nor can they modify registry hives with global scope such as LOCAL_MACHINE. And if you find a way to do it anyway, it is doomed to be a bug, and will be fixed in a service pack or a new release. :)
Luc Pattyn
I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages
-
A regular user should not be able to force another user to execute some of his code, and Vista has been the first Windows version to enforce this: regular users can't access someone else's private folders (such as StartUp), nor can they modify registry hives with global scope such as LOCAL_MACHINE. And if you find a way to do it anyway, it is doomed to be a bug, and will be fixed in a service pack or a new release. :)
Luc Pattyn
I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages
-
Go to
Start -> Programs -> StartUp
, right click on it and selectExplore
. You will now be able to see the path for theStartUp
folder. You can use the SHGetSpecialFolderLocation[^] API and give the nFolder parameter as CSIDL_STARTUP.«_Superman_» I love work. It gives me something to do between weekends.
Microsoft MVP (Visual C++) -
Okay, I've just realized I don't know how to make a shortcut. Any hints? Edit: Is there any particular reason why I should use
SHGetSpecialFolderLocation
instead ofSHGetSpecialFolderPath
?modified on Thursday, November 5, 2009 10:44 PM
You need to use IShellLink::GetPath[^] and IPersistFile::Save[^] to create shortcuts. Take a look at this article - Utility for creating Link(shortcut)...[^]
«_Superman_» I love work. It gives me something to do between weekends.
Microsoft MVP (Visual C++) -
You need to use IShellLink::GetPath[^] and IPersistFile::Save[^] to create shortcuts. Take a look at this article - Utility for creating Link(shortcut)...[^]
«_Superman_» I love work. It gives me something to do between weekends.
Microsoft MVP (Visual C++) -
And unless I'm very much mistaken, we're back to using COM again. :laugh: No problem, thanks for your advice. :)
:) COM is like alcohol. Good for anything.
«_Superman_» I love work. It gives me something to do between weekends.
Microsoft MVP (Visual C++) -
That's true, but it sounds like if I use superman's method, I'll be able to get my app to run for the current user (not all users though). That sounds good enough to me. :-D
Current user is no problem, there are many ways to do it. The personal startup folder is Environment.GetFolderPath(Environment.SpecialFolder.StartUp) which returns a different location on different Windows versions. [EDIT]Sorry, that is .NET stuff...[/EDIT] :)
Luc Pattyn
I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages
modified on Friday, November 6, 2009 6:34 PM
-
Current user is no problem, there are many ways to do it. The personal startup folder is Environment.GetFolderPath(Environment.SpecialFolder.StartUp) which returns a different location on different Windows versions. [EDIT]Sorry, that is .NET stuff...[/EDIT] :)
Luc Pattyn
I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages
modified on Friday, November 6, 2009 6:34 PM
-
And then we run into the same problem up there (in the other "sub-thread"). :laugh: It's okay, I'm going to see if I can get COM to work...my copy of the SDK doesn't have it for some reason. Going to download some other copy.
-
Okay, I've just realized I don't know how to make a shortcut. Any hints? Edit: Is there any particular reason why I should use
SHGetSpecialFolderLocation
instead ofSHGetSpecialFolderPath
?modified on Thursday, November 5, 2009 10:44 PM
hxhl95 wrote:
Edit: Is there any particular reason why I should use SHGetSpecialFolderLocation instead of SHGetSpecialFolderPath?
It all depends on whether you want the folder's PIDL or its path. They are not interchangeable functions.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
-