1

我在 Windows Vista 上使用 VS2005。我使用 .NET 2.0 在 C# 中创建了一个非常简单的 Windows 应用程序,这是一个带有关闭按钮的表单。

由于有必要的库,我需要 VS-option 目标平台“x86”。如果我在 Vista 上构建并将应用程序传输到 X64 Windows 7 计算机,则应用程序需要管理员权限才能执行(UAC-Message-Dialog),我想避免这种情况。

如果使用 VS 选项目标平台“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
}
4

2 回答 2

1

您可能正在尝试将文件写入 C:/ 或 C:/Program Files 文件夹。尝试将任何文件写入该文件%Current User%夹以避免 UAC。除此之外,在没有看到您的任何代码的情况下,我无法提供更多解决方案。

于 2012-11-26T15:20:05.630 回答
0

问题是程序名称中的“更新”一词。

当可执行文件的名称中包含“更新”、“安装”或“设置”等词时,Windows 会假定它可能是一个安装程序,很可能需要管理权限。因此,这些程序被迫在启用 UAC 的系统上以提升提示运行。

它也不仅仅是可执行文件的名称。如果重命名文件不能解决问题,应用程序的版本信息中也可能包含这些关键字。具有以下内容将导致相同的行为:

[assembly: AssemblyTitle("Setup DVD Player")] 
[assembly: AssemblyProduct("Instal President")] // Yes, even with the misspelling.

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

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

于 2015-03-31T09:03:36.533 回答