Why VISTA says to end-user that it has blocked my app's systray icon? how to avoid this?
Your program may not have the privileges (security settings) it needs to run.
Related
I have a application(which runs on windows7 and requires run as administrative) that need to run automatically when windows starts up, so i added a registry key under "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" as usual, but my application won't startup automatically even the UAC dialog doesn't promtp, after search from google. I know i can use task scheduler to workaround this, but is there anyboday can tell me why the "run" registry way doesn't work? why the UAC dialog doesn't promtp? it is better if you can help to find a article from microsoft to explain this issue, many thanks in advance!
It is for making the machine usable as quick as possible after booting.
Microsoft Whitepaper: Developing Applications that Run at Logon on Windows Vista
When Windows starts, there is no user to show the UAC prompt to, so your process would have to be held up until an administrative user logs in.
The Task Scheduler is the right way to do what you want.
We linked our application with a manifest with requireAdministrator option in c++. This is because the application modifies HKLM registry entries. When we execute the application, Windows displays the following message. Is it possible to make this window do not appear for our application without changing the UAC setting of Windows?
The basic answer is no. UAC is designed to prompt you for just this purpose. If you could bypass the UAC for your good application, the same could be true for the bad applications that are out there. Because you are writing to the registry at HKLM, you have to elevate your access.
You could move the dialog around a bit if you want. For example, you could create an application icon that would immediately prompt the user with the UAC when they started the application but that isn't a great idea since the point of UAC is to run without permissions until they are needed.
Here is a link to more information about the UAC and how to work with it:
http://msdn.microsoft.com/en-us/magazine/cc163486.aspx
I have developed an application that needs admin rights to execute. Running the application on Windows 7, the user always have to launch the application as "Run as Administrator" otherwise my application prompts the user that "you don't have administrative rights etc...". This is OK and understandable because of UAC in windows 7.
To get rid that the user have to set the application as "Run as Administrator". I updated my application's "app.manifest" and set
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
Which done the job for me.
But now, a security center symbol shield appears with my application's icon.
Now my question is "Why does this icon appear on my application, and what does it indicate?"
I tried marking another of my applications to "Always Run as Administrator" via windows but the same icon wouldn't appear with that application.
I want to understand the reasons and scenarios.
The shield is there to remind the user that if they double-click the exe to run it, they will get a UAC dialog. These dialogs should never be a surprise and if you get one you weren't expecting, you should really not consent to it.
The shield appears if you have a manifest that requests elevation (requireAdministrator or highestAvailable, but not if your manifest specifies asInvoker), and for certain file names. For more details see my blog entry (written at Vista time, but still applies to Windows 7) and MSDN articles on UAC and UI guidelines.
I'm trying to figure out if there's a way to use SetWindowsHookEx and be able to affect apps that are run with Admin rights on Vista, with UAC enabled. This is an app that will need to add a small button to the caption bar of other windows to enable some multi-monitor-aware handling. I would have thought this couldn't be done, but I've seen one app that appears to do this. As far as I can tell, this other apps is not being run with Admin rights, and yet it can affect all apps in the system, including those with Admin privilege.
It would seem that there's a way to do this, then, but I'm at a loss on how. My app only needs to be able to draw on window title bars and be able to affect their movement and size. I don't need to do anything else.
You can't, as administrative processes are isolated from non-administrative processes running on the same user desktop. You can't even drag and drop between admin and non-admin processes.
This is an in-dept analysis: http://technet.microsoft.com/en-us/magazine/2007.06.uac.aspx
About the application you are referencing, it probably uses some administrative code running in background (usually as a service) so it can interact with administrative processes.
I'ved developed a c# application that captures screens using bitblt and sends keyboard and mouse events using calls to keybd_event and mouse_event.
According to Microsoft I needed to modify the app.manifest with:
requestedExecutionLevel level="highestAvailable" uiAccess="true"
Sign the application and place it in a trusted location (program files).
I have done all of these to get the application to run under elevated priviledges under Vista but when UAC dialogs appear it does not capture those screens and the keyboard and mouse events do not reach the UAC dialog.
I am guess that UAC runs in a different desktop?? if so, how would i capture that? and how can i detect when the desktop switches to a UAC dialog in c#? or have i just missed a step?
UAC runs on the secure desktop, only trusted processes running on the system account are allowed to run in that context.
This is to prevent exactly what you are trying to achieve - processes spoofing or capturing user input.
You cannot. The UAC desktop is secure because it doesn't allow anyone to access it.
To detect the desktop switch event, I would try to use SENS or WTSRegisterSessionNotification. But it doesn't look very promising.