1

我正在尝试将 AutoCAD 用户的设置存储在他们的 Program Files 下的目录中。最初,我将所有内容都存储在用户收藏夹文件夹中,但我想将所有插件文档/文件保存在同一目录中。所以,我一直在尝试各种选项来在运行时获得管理员权限,但仍然没有成功。这或多或少是我最近测试的:

Public Shared Sub GetAdminAccess()
    AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal)
    Dim curIdentity As WindowsIdentity = WindowsIdentity.GetCurrent()
    Dim principalPerm As PrincipalPermission = New PrincipalPermission(Nothing, "BUILTIN\Administrators")
    principalPerm.Demand()
End Sub

<PrincipalPermissionAttribute(SecurityAction.Demand, Role:="BUILTIN\Administrators")>
Private Shared Sub CreateSettingsFile()
    Try
        IO.File.Create(SettingsFilePath)
        SettingsFileData = DefaultFileData
        Property_WindowsOnTop = True
        Property_SaveBackups = False
        Property_SkipCreateSite = False
        Property_AlignmentZoomExtents = ToFullExtents
        Property_SaveBackups_Method = _TxtValue_Generic_None
        Property_SaveBackups_MainDirectoryPath = _TxtValue_Generic_None
        Call SetUserSettings(SettingsFileData)
        Call SetPropertySettings()
    Catch IOE As IO.IOException
        MsgBox(IOE.Message)
    Catch Ex As Exception
        MsgBox(Ex.Message)
    End Try
End Sub

我的许多尝试都导致了同样的错误:

“应用程序尝试执行安全策略现在允许的操作。要授予此应用程序所需的权限,请联系您的系统管理员,或使用 Microsoft.NET Framework 配置工具。

如果单击继续,应用程序将忽略此错误并尝试继续。

委托人许可请求失败。”

4

1 回答 1

1

没有管理员权限,应用程序无法写入 Program Files 文件夹。程序文件文件夹(及其下的子文件夹)受管理员保护,以防止程序用恶意等效程序替换已安装的可执行代码。只是不要那样做。

如果需要特定于应用程序的数据,请使用 appData 文件夹。您可以使用System.Environment.SpecialFolder.ApplicationData和访问该文件夹Environment.GetFolderPath

熟悉SpecialFolder枚举(和System.IO.Path.Combine)。它们是访问 Windows 操作系统中所有知名文件夹的正确方法。

于 2021-01-21T23:42:09.770 回答