我在Windows Vista上使用VS2005。 我使用.NET 2.0在C#中创建了一个非常简单的Windows应用程序,这是一个带有关闭按钮的表单。
由于有必要的库,我需要VS-option目标平台“x86”。如果我在Vista上构建并将应用程序传输到X64 Windows 7计算机,则该应用程序需要管理员权限才能执行(UAC-Message-Dialog),我想避免这种情况。
如果使用VS-option目标平台“anyCPU”,这样可以正常工作,但我需要一个针对目标平台“x86”的解决方案。
有人能帮助我吗?
我想要做的是更改代码或项目配置以避免Windows7(x64)上的UAC-Message-Dlg。但我不知道自己要做什么。我需要选项“x86”,因为我们想要使用x86库。测试代码非常简单(见下文),所以我认为问题出在项目配置中:
// Project code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Updater2
{
public partial class Form1 : Form
{
public Form1( )
{
InitializeComponent( );
}
private void toolStripButton1_Click( object sender, EventArgs e )
{
Close( );
} // -- toolStripButtonClose_Click
} // - Form1
}
答案 0 :(得分:1)
您可能正在尝试将文件写入C:/或C:/ Program Files文件夹。尝试将任何文件写入%Current User%
文件夹以避免UAC。除此之外,如果没有看到任何代码,我就无法提供更多解决方案。
答案 1 :(得分:0)
问题是" 更新"在程序名称中。
当可执行文件包含"更新","安装"或"设置"在其名称中,Windows假定它可能是一个很可能需要管理权限的安装程序。因此,这些程序被强制在启用UAC的系统上以提升提示运行。
它不仅仅是可执行文件名。如果重命名文件无法解决问题,则应用程序也可能在其版本信息中包含这些关键字。具有以下内容将导致相同的行为:
[assembly: AssemblyTitle("Setup DVD Player")]
[assembly: AssemblyProduct("Instal President")] // Yes, even with the misspelling.
简单的方法是重命名应用程序并避免使用这些关键字。
正确的方法是在可执行文件中包含应用程序清单。