为什么“Settings.Save”需要管理员权限?

时间:2016-06-13 18:03:32

标签: vb.net windows permissions

我正在使用Visual Studio 2013和Windows 7.当用户关闭表单时,我正在保存窗口位置,并且程序在异常中断,因为我没有以管理员权限运行它。

这是我的App.Config文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
            <section name="Test.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
        </sectionGroup>
    </configSections>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/>
    </startup>
    <userSettings>
        <Test.My.MySettings>
            <setting name="InitialLocation" serializeAs="String">
                <value/>
            </setting>
            <setting name="TelefonosConsultados" serializeAs="Xml">
                <value>
                    <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
                        <string>0123456789</string>
                    </ArrayOfString>
                </value>
            </setting>
            <setting name="Server" serializeAs="String">
                <value>localhost</value>
            </setting>
            <setting name="Port" serializeAs="String">
                <value>3306</value>
            </setting>
            <setting name="Database" serializeAs="String">
                <value>dwh</value>
            </setting>
            <setting name="User" serializeAs="String">
                <value>root</value>
            </setting>
            <setting name="Password" serializeAs="String">
                <value>password</value>
            </setting>
        </Test.My.MySettings>
    </userSettings>
</configuration>

1 个答案:

答案 0 :(得分:0)

当您通过“项目属性”窗口将Settings添加到项目时,有一个Scope选项。如果您使用Application范围而不是User范围,则可以在该特定计算机上为该应用程序的所有用户保存该设置。只有管​​理员才能为所有用户指定设置,因此例外。 .Net会将该设置存储在只有管理员帐户可以访问的位置,因此需要提升才能完成保存(您的进程从未提示过)。

如果您改为选择User范围,则您不会需要提升,设置将保存而不会抱怨。但是,只有该用户才能看到新设置。