VS2005 .NET 2.0和C#和x86目标平台

时间:2012-11-26 14:30:46

标签: c# visual-studio-2005 x86 uac

我在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
}

2 个答案:

答案 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.

简单的方法是重命名应用程序并避免使用这些关键字。

正确的方法是在可执行文件中包含应用程序清单。