【问题标题】:Edit Settings.txt Document within Program Files directory during AutoCAD runtime在 AutoCAD 运行时编辑 Program Files 目录中的 Settings.txt 文档
【发布时间】:2021-04-25 12:18:14
【问题描述】:

我正在尝试将 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 配置工具。

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

请求主体权限失败。"

【问题讨论】:

  • 没有管理员权限的应用程序无法写入 Program Files 文件夹。不要这样做。如果您想要一个共享的、特定于应用程序的位置,请写入文件夹 AppData (System.Environment.SpecialFolder.ApplicationData )
  • @Flydog57 我接受了你的建议。我很高兴我也这样做了,因为现在每次重新安装更新的插件时都不会替换 Settings.txt。这正是我从一开始就希望实现的目标。我认为这是特定于该目录的?当存储在任何其他目录中时,txt 文档将始终被替换。无论如何,出于好奇,为什么不应该获得管理员权限来更改 Program Files 目录中的文档?
  • 程序文件夹(及其下的子文件夹)受管理员保护,以防止程序用恶意等效程序替换已安装的可执行代码。如果需要使用 appData 文件夹的特定于应用程序的数据。我喜欢对设置文件做的事情(特别是如果它们是每个用户的)是使用 IsolatedStorage。我通常将我的设置保存在一个 XML 文件(具有特定于应用程序的架构)中,我在应用程序启动时从独立存储中读取该文件,并在应用程序关闭时写回该文件
  • 我添加了一个答案,以便您的问题有一个明确的答案(即,这就是本网站的目的)。如果它有用,请投票。如果它解决了您的问题,请接受它。
  • 谢谢@Flydog57!我尝试对其进行投票,但我需要 15 个声望点才能将其公开。但是,我会在此消息中明确表示,我 100% 同意并感谢您的帮助。我对编程非常陌生,以前从未真正接触过这样的人,所以我很无知。我正在努力进入学校尽可能多地学习。理想情况下,我很想知道关于计算机的一切;但我知道这对一个人来说是不可能的。如果您有任何可以帮助我学习编程的建议,请告诉我。

标签: vb.net permissions autocad program-files


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    相关资源
    最近更新 更多