1

C:\Program Files (x86)除了Windows 7 Pro 上的 Program Files 目录(例如)之外,某些应用程序无法从任何地方运行。

如果我想将某些东西安装到另一个驱动器(例如I:\OtherPrograms),这些程序根本不起作用。有没有办法让其他目录表现得像两个 Program Files 目录?

仅供参考:“以管理员身份运行”不起作用。

4

2 回答 2

1

限制权限

这听起来更像是导致这些问题的问题或错误安装,而不是安全行为。简而言之,windows 将根据您的用户级别决定您在何处以及对哪些内容具有执行权限。当您以管理员身份运行时,您可以完全访问做任何您想做的事情(事实上他们不以管理员身份运行更可能意味着出现问题)。

综上所述,您可以调整用户权限并阻止用户执行已知目录中的程序。因此,如果您让您的用户安装后台服务或以管理员身份运行您的程序,您可以更改 Windows 权限并阻止他们在可接受的目录之外执行任何操作。

如果您是您只想在特定目录中运行的程序的作者,该目录将成为您编码的一部分。您可能想要获取应用程序路径目录,可能会将其与您当前的工作目录等进行比较,以判断用户是否从接受的路径启动了程序。然后,您可以编写程序以警告用户并关闭。

至于只是告诉windows(如果它存在于这个路径中,你只能运行这个程序)可以通过权限来完成,但它不一定会影响未来的变化。例如,您可以将其设置为用户不能在 C:\Apps 中执行。但是在您的程序操作权限并从那里执行后,用户可能会创建 C:\Apps\Haha。你运行的越多,你在他们自己的系统上为用户提供的功能越少,他们使用你的产品的可能性就越小,所以除非你有一个非常好的理由,否则这并不是你真正想做的事情。

如果安装在其他位置会失败的程序

在对此进行了更多讨论之后,最初的问题似乎是,如果您将程序安装在 Program Files 目录之外的某个位置,您将如何修复该程序失败。简而言之,答案是你没有,这不是窗户或你的错。“程序文件”或“程序文件(x86)”目录只是世界认为它们的“特殊”。就计算机而言,它们只是硬盘驱动器上的路径。就 Windows 而言,它们只是硬盘驱动器上的一条路径。

唯一真正开始有所不同的是Windows将“环境变量”暴露给程序(在代码级别)。这些环境变量在注册表中存储和编辑。在另一篇文章中指出的其中一个可以让您告诉窗口您的“程序文件”目录在哪里。更改此路径可能会导致许多已安装程序开始出现问题,因此出于任何原因通常不建议这样做。

关于“程序文件”目录的另一件事是程序可以向窗口询问它的“程序文件”路径。Windows 将检查注册表并告诉您的程序当前的“程序文件”路径是什么。这更有可能是您的程序存在问题,而不是它们安装在程序文件目录之外的某个位置。编码人员可能认为您将安装在程序文件目录中,因此当您尝试运行程序时,它正在程序文件目录中寻找资源,但您将其安装在任何自定义目录中。解决此问题的唯一方法是进行自定义安装,并在它要求您提供路径时密切注意。您需要为每个程序寻找文档来修复它。

关于权限的更多信息

也只是为了进一步说明 UAC(用户访问控制或权限)。它们基本上是基于操作系统上的用户帐户的规则集。(在这种情况下是 Windows 和 PC 用户)。当您使用计算机时,您将登录到这些 PC 用户帐户之一。然后,Windows 将根据为您的用户帐户设置的规则授予您对目录和文件的访问权限。

当你分解它们时,这些规则实际上是非常基本的。规则可以应用于目录或文件,系统上的每个目录和文件都有为其设置的规则。在大多数情况下,这些规则都是在幕后设置和处理的,因此您可能不知道它们。这些规则基于 3 个条件分离访问权限,即文件或目录的所有者、目录或文件的关联组以及其他所有人。这意味着每个目录或文件的每个“规则”都包含 3 个条件。规则的这些条件中的每一个都会告诉我们用户是否可以读取、写入、执行或这三者的任意组合。

因此,话虽如此,并将其应用于问题,当您安装程序时,您首先执行安装程序。然后,该安装程序可能会尝试以管理员身份运行,或者可能会要求您让它成为管理员。安装程序从这里开始在您的系统上放置文件(无论您告诉它到哪里,在大多数情况下它都不会触及您的权限)。一旦所有文件就位,安装程序就会退出,您可以开始使用您的程序。在这一点上,假设程序可以运行并且没有错误,并且安装程序安装了你需要的所有东西,你准备好了。现在唯一可能妨碍您的是您的用户权限不允许您在刚刚安装的目录中执行程序。很可能虽然这不会发生,但如果您已经写了您

现在,当您(从任何地方)运行程序时,您会告诉 Windows“启动此程序”Windows 检查权限,如果您可以在该路径中执行该文件或文件,那么它将运行该程序。如果不是,它会告诉你你不能,并告诉你为什么。该程序启动,它拥有与您启动它时完全相同的所有权限。如果您以管理员身份运行,该程序肯定会启动,并且将获得对所有内容的完全权限(在大多数情况下是个坏主意)。就是这样,没有什么会说“如果您从 Program Files 启动让自己成为管理员”或“如果您在程序文件中可以编辑系统注册表项”。这一切都基于用户的权限和“谁”启动程序。

于 2012-12-31T02:27:19.877 回答
0

我所知 。有一种方法你可以试试。有一些风险,所以要小心。

启动“运行”对话框。输入“regedit”,然后打开 regedit 编辑器。找到这个值。

"HKEY_LOCAL_MACHINE\Software\ Microsoft\Windows\CurrentVersion" 

在右侧窗口中,找到“ProgramFilesDir”双击它,然后将其值修改为您的位置。然后输入。关闭 regedit editor.reboot 你的电脑..

于 2012-12-31T02:24:25.333 回答