Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#写入和读取应用程序设置和日志文件最佳实践(UAC程序文件x86)_C#_.net_Permissions_Settings - Fatal编程技术网

C#写入和读取应用程序设置和日志文件最佳实践(UAC程序文件x86)

C#写入和读取应用程序设置和日志文件最佳实践(UAC程序文件x86),c#,.net,permissions,settings,C#,.net,Permissions,Settings,我有以下情况: 1。一种正在运行的Windows服务,用于收集一些应存储在中心位置的数据(文件)。要知道必须存储哪些文件,我需要一个configuration.xml文件或类似的文件。还写了一些日志 2。使用一个小型windows窗体应用程序,我希望能够更改configuration.xml文件中的设置 第一个问题:本论坛的许多人建议使用AppData文件夹存储应用程序设置。但在我看来,我不能这样做,因为可能有其他用户登录到了计算机。(不同的用户文件夹)以及收集的文件每次都应存储在同一文件夹中,

我有以下情况:

1。一种正在运行的Windows服务,用于收集一些应存储在中心位置的数据(文件)。要知道必须存储哪些文件,我需要一个configuration.xml文件或类似的文件。还写了一些日志

2。使用一个小型windows窗体应用程序,我希望能够更改configuration.xml文件中的设置

第一个问题:本论坛的许多人建议使用AppData文件夹存储应用程序设置。但在我看来,我不能这样做,因为可能有其他用户登录到了计算机。(不同的用户文件夹)以及收集的文件每次都应存储在同一文件夹中,而不是不同的用户文件夹中

第二个问题:如果尝试使用Program Files(x86)文件夹,则即使用户是本地管理员组的成员,也会出现权限拒绝错误

我见过很多应用程序正在做类似的事情,它们可以写入程序文件(x86)文件夹(例如:日志文件),而不提示用户提升权限(清单)

你知道这是怎么回事吗

应用程序名称:pop_consoleApp2.exe 清单文件名:pop_consoleApp2.exe.Manifest

舱单:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0"
     processorArchitecture="X86"
     name="pop_consoleApp2"
     type="win32"/>
  <description>Description of your application</description>
  <!-- Identify the application security requirements. -->
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="highestAvailable"
          uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>

申请书的说明

您需要将
app.manifest
文件添加到项目中,以向用户授予
提升权限-

默认情况下,若您只是在项目中添加清单文件,您将在文件中看到以下行-

<requestedExecutionLevel level="asInvoker" uiAccess="false" />

有关更多详细信息,请参阅此处的链接。

您可以使用通用应用程序数据文件夹(通常称为“程序数据”,是系统驱动器根目录上的一个隐藏文件夹)。它是一个非漫游用户独立的应用程序数据文件夹。它的位置在此变量中给出:

System.Environment.SpecialFolder.CommonApplicationData

您可以在那里为应用程序创建子文件夹。此外,您可以/应该在设置服务时设置该文件夹的权限(例如,服务帐户读/写、所有用户的读访问权限)

谢谢你的回答,但由于我已经发布了我不想得到UAC的提示来确认这一点。我已经知道应用程序的这种方式。清单。。。但我认为这只适用于提示…?不,不会。检查我从
msdn
添加的链接。我一直在使用我的项目没有任何提示。mh。。。我又试了一次,但没有成功。。。我从应用程序开始时得到提示。。。?我在我的清单文件上面发布了,有什么想法吗?好的,谢谢。这是一个关于应用程序设置的好主意,可以为我工作。但是,我喜欢将收集的数据存储在一个中心位置,这是什么呢。。。?我不认为这是存储大量数据的正确地方吗?但你又让我向前迈进了一步,再次感谢。只要你不希望你的用户通过文件浏览器浏览这些数据,这个文件夹就可以容纳大量数据。请看以下博客:
System.Environment.SpecialFolder.CommonApplicationData