你能使目录的行为类似于“Program Files”/“Program Files(x86)”吗?

时间:2012-12-31 02:16:58

标签: windows-7-x64

某些应用程序无法在Windows 7 Pro上的Program Files目录(ex C:\Program Files (x86))之外的任何位置运行。

如果我想将内容安装到另一个驱动器(ex I:\OtherPrograms),这些程序根本不起作用。 有没有办法让其他目录的行为类似于两个Program Files目录?

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

2 个答案:

答案 0 :(得分:1)

限制权限

这听起来更像是导致这些问题而不是安全行为的问题或错误安装。简而言之,窗口将决定您的用户级别执行权限的位置和内容。当您以管理员身份运行时,您可以完全访问您想要的任何内容(事实上,他们不会以管理员身份运行,更可能意味着出现问题)。

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

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

只是告诉窗口(如果它存在于此路径中,您只能运行此程序)可以通过权限完成,但它不一定会影响将来的更改。例如,您可以对其进行设置,以便用户无法在C:\ Apps中执行。但是,在程序操作权限并从那里执行后,用户可以创建C:\ Apps \ Haha。您运行的越多,用户通过自己的系统提供的功能越少,他们使用您的产品的可能性就越小,因此除非您有充分的理由,否则您不想做的事情。

安装在其他位置时失败的程序

在讨论了这个之后,最初的问题似乎是如何修复程序,如果你在Program Files目录之外的某个地方安装它就会失败。简而言之,答案是你不是,它不是窗户或你的错。 "程序文件"或"程序文件(x86)"目录只是"特殊"因为世界认为它们是。就计算机而言,它们只是硬盘上的路径。就Windows而言,它们只是硬盘上的一条路径。

事情真正开始变得与众不同的唯一一次是Windows曝光"环境变量"程序(在代码级别)。这些环境变量在注册表中存储和编辑。其中一个在另一个帖子中指出,让你告诉窗口你的" Program Files"目录是。更改此路径可能会导致在许多已安装的程序中出现问题,并且通常不建议出于任何原因。

另外需要注意的是" Program Files"目录是程序可以向窗口询问它的程序文件"路径。 Windows将检查注册表并告诉您的程序当前" Program Files"路径是。这更可能是程序问题所在,而不是它们安装在程序文件目录之外的某个地方。编码器可能会将您安装在程序文件目录中,因此当您尝试运行程序时,它会在程序文件目录中查找资源,但您将其安装在任何自定义目录中。解决此问题的唯一方法是进行自定义安装,并在它询问您的路径时密切关注。您需要为每个程序寻找文档来修复它。

关于权限的更多信息

还有一点关于UAC(用户访问控制或权限)的更多说明。它们基本上是基于操作系统上的用户帐户的规则集。 (在这种情况下为Windows和PC用户)。当您使用计算机时,您将登录到其中一个PC用户帐户。然后,Windows将根据您为用户帐户设置的规则授予您访问目录和文件的权限。

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

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

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

答案 1 :(得分:0)

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

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

"HKEY_LOCAL_MACHINE\Software\ Microsoft\Windows\CurrentVersion" 

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