在winforms应用程序中使用C#和.Net 4.0:是否可以将UAC屏蔽添加到按钮并保留按钮背景图像?怎么样?
这就是我现在正在使用的,但它删除了图像......
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
public static void UACToButton(Button button, bool add)
{
const Int32 BCM_SETSHIELD = 0x160C;
if (add)
{
// The button must have the flat style
button.FlatStyle = FlatStyle.System;
if (button.Text == "")
// and it must have text to display the shield
button.Text = " ";
SendMessage(button.Handle, BCM_SETSHIELD, 0, 1);
}
else
SendMessage(button.Handle, BCM_SETSHIELD, 0, 0);
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
我使用了此处所述的应用程序清单文件,使我的应用程序的一部分以提升的权限运行(它需要).
因此,在需要时,主程序只使用Process.Start调用一个小程序集,然后处理需要管理员权限的任务.
但是,如何在Windows XP上执行相同的操作?
似乎XP只是忽略了这个清单并在当前用户上下文中运行小程序集.
几天来我一直在努力解决这个问题,找不到任何可以解决这个问题的帖子.也许我想要的是不可能的.
我们开发了一个WinForms应用程序供我们公司内部使用.
大多数员工在Windows中没有管理员权限.
我们的应用程序需要管理员访问机器,并且需要在用户登录时自动启动.
这是我尝试过的:
我可以让应用程序自动启动(使用relauncher),但它仍然需要管理员在每次重启时都在计算机上(输入密码).
我创建了一个Software\Microsoft\Windows\CurrentVersion\Run注册表项来自动启动应用程序.无论是运行重新启动器还是应用程序本身,UAC都需要在每次重启(或重新登录)时输入密码.
我创建了一个计划任务,使用计算机上的管理员权限在登录时自动启动应用程序(使用以下帐户).我还检查了"以最高权限运行"框.每次重启都会弹出UAC.
我试图将应用程序作为Windows服务运行,但它有一个用户界面(由Windows服务禁用).
看起来您可以为特定程序禁用UAC,但这涉及下载应用程序兼容性工具包,创建某种数据库等.我非常希望我们的IT人员不必在每台计算机上都这样做.在这一点上,这可能是我唯一的选择.
管理员似乎应该能够安装一个应用程序,以便它在没有提示的情况下自动运行.我错过了这样做的方法吗?