在Windows上安装PostgreSQL 9:“无法在TEMP环境path内写入”。

我试图在我的WinXP机器上安装PostgreSQL 9(postgresql-9.0.3-1-windows.exe),并在开始时得到以下错误:

无法在TEMP环境变量路径中写入。

一些search引擎提出了一些build议,build议Windows脚本宿主可能被禁用 。 我已经检查过,WSH肯定是启用的,所以它一定是别的。 问题是,什么?

我可以看到一个名为prerun_checks.vbs的文件是在%TEMP%中创build的,当我尝试手动运行这个文件时,我得到以下结果:

在这里输入图像说明

这看起来像一个权限错误。 然而,我是一个pipe理员,我已经给了自己完全控制的临时文件夹,它仍然无法正常工作。

任何帮助赞赏。

在我的情况下,该解决方案与NotePad++是打开.vbs文件的默认应用程序有关。 如果你有相同的情况,这里有一个精心设计的解决方案:

http://igordcard.blogspot.co.il/2012/03/unable-to-write-inside-temp-environment.html

简而言之,在注册表中,您需要转到HKEY_CLASSES_ROOT\.vbs ,并将(Default)条目重新设置为字符串VBSFile

正如我上面提到的那样,我们的IT负责人出现了,立刻就知道问题所在:它是McAfee。 它阻止任何东西在TEMP文件夹中运行,包括Windows脚本宿主脚本。 在安装过程中禁用McAfee可为我解决问题。

所以,如果你看到这个问题,请尝试禁用你的反病毒。

下一页的答案帮助了我。 http://forums.enterprisedb.com/posts/list/3040.page

  1. 运行 – >注册表并使用导出采取注册表的备份
  2. HKEY_LOCAL_MACHINE-> SOFTWARE-> Classes-> CLSID-> B54F3741-5B07-11cf-A4B0-00AA004A55E8} – > Inprocserver32
  3. 修改注册表项以新值作为C:\ Windows \ System32 \ vbscript.dll

事实上,我发现HKEY_LOCAL_MACHINE-> SOFTWARE-> Classes-> CLSID-> B54F3741-5B07-11cf-A4B0-00AA004A55E8有3个条目,并且如上设置第一个,它起作用。

如果其他人正在寻找这方面的信息,并没有什么运气,你可能想看看:

http://wiki.postgresql.org/wiki/Troubleshooting_Installation

对于邮件列表的后续,请阅读:

http://wiki.postgresql.org/wiki/Guide_to_reporting_problems

那么,在我的情况下,没有任何工作,并禁用McAffee需要与我公司的安全团队的特殊票据实际上…所以我安装使用二进制文件,遵循本指南的有用的指南 。

总之,从这里下载二进制文件,解压,进入pgsql文件夹,在那里创建logdata目录,然后打开命令提示符,导航到pgsql\bin文件夹所在的位置,然后运行initdb -U postgres -A password -E utf8 -W -D POSTGRESQL_ROOT\data

您可以通过运行来启动和停止服务器

 "POSTGRESQL_ROOT/bin/pg_ctl" -D "POSTGRESQL_ROOT/data" -l "POSTGRESQL_ROOT/log/pgsql.log" start 

 "POSTGRESQL_ROOT/bin/pg_ctl" -D "POSTGRESQL_ROOT/data" -l "POSTGRESQL_ROOT/log/pgsql.log" stop 

POSTGRESQL_ROOT是pgsql文件夹的完整路径。

为了防止进一步的问题,您还应该排除数据目录(Postgres放置其数据的地方)被病毒扫描程序扫描

在我的情况下,这是另一个应用程序,导致这个问题。 不是记事本++。 对于遇到此问题的其他人,可以先删除C:\Documents and Settings\UserName\Local Settings\Temp所有文件,以便在再次尝试安装postgresql时能够轻松找到bitrock_installer.log并查看其中的说明。 将注册表的HKEY_CLASSES_ROOT.vbs部分中的(默认)键更改为VBSFile解决了它。

试图在Windows 7 64位上安装32位版本时遇到此问题。

试用64位的安装套件没有提供任何错误,但其他人提供的解决方案也是有效的。

在我的情况下,我已经下载迈克菲清除工具MCPR(迈克菲消费者产品删除) ,清除了McAfee卸载后的尾部。

先前具有Inprocserver32值(如'c:\program files\common files\mcafee\systemcore\...'某些注册表项已更改回其原始值:

 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{B54F3741-5B07-11cf-A4B0-00AA004A55E8}\Inprocserver32\(default) = vbscript.dll HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\{B54F3741-5B07-11cf-A4B0-00AA004A55E8}\Inprocserver32\(default) = C:\Windows\SysWow64\vbscript.dll 

之后,我成功安装了PostgreSQL 9.3

以上所有都不适合我。 我得到一个错误,如:

脚本输出:CScript错误:在此机器上禁用Windows脚本主机访问。 详情请联系您的管理员。

所以经过一些谷歌搜索后,我发现解决方案:导航到以下的关键:

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows Script Host \ Settings

在右侧面板中,您会看到启用。 如果看到条目0,则意味着您的Windows计算机上禁用了Windows脚本宿主访问。

双击它,并给它数值数据1来启用它。

值为1将启用Windows脚本主机值为0将禁用Windows脚本主机。

为Windows 10导航到

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows Script Host \ Settings

检查系统TEMP目录中的日志(如果安装程序能够写入)。 有很多关于错误的信息。

我的问题是,VBS文件与文本编辑器(可能反病毒软件是罪魁祸首)相关联。

在这里你可以找到一些reg编辑脚本来恢复默认行为: http : //www.nilpo.com/2009/07/windows-xp/restoring-vbs-vbscript-script-file-file-file-associations/#more- 107

干杯

记事本++关联.vbs文件类型时发生。 您可以打开记事本++ – >首选项 – > fileAssociation从注册的exts中删除.vbs。 关闭记事本++。 尝试再次安装Postgres。

我的问题是Smad-Av禁用Windows脚本运行,只有通过我记得这个线程。 我只需右键单击Smad-Av图标并选择Windows Script和Macro Forever。

在我的情况下更改注册表中的HKEY_CLASSES_ROOT,.vbs部分(默认)键到VBSFile解决它。 BlueFish抓取.vbs文件关联。

我的解决方案与#5类似,并解释了McAfee如何以及为什么会破坏您的vbscript注册。

显然,当我在我的电脑上安装了McAfee防病毒软件时,就会使Windows脚本主机需要运行.VBS文件的vbscript.dll注册失败。

在导出的.REG文件中:

[HKEY_CLASSES_ROOT \ CLSID {B54F3741-5B07-11cf-A4B0-00AA004A55E8} \ Inprocserver32] @ =“C:\ Program Files \ Common Files \ McAfee \ SystemCore \ ScriptSn.20120327211246.dll”

现在应该改回“C:\ Windows \ System32 \ vbscript.dll”。

迈克菲显然安装了一个劫持vbscript.dll的DLL,以便尝试保护坏脚本运行。 当我卸载McAfee赞成微软

安全基础知识,迈克菲没有恢复注册表路径(“不是我的问题”),当然,在卸载过程中,McAfee DLL,被从该位置删除,所以vbscript.dll注册实际上指向NOWHERE和NOTHING。

编写防病毒软件必须有更好的方法,以便在卸载用户的操作系统,关闭功能或更换注册时不会禁用该操作系统。 请参阅以下内容:

https://kc.mcafee.com/corporate/index?page=content&id=KB71660

我有一个64位的操作系统。 注册表路径在多个位置被更改。

常规类ID应该指向“C:\ Windows \ System32 \ vbscript.dll”64位文件。

“Wow6432Node”注册表路径应该指向“C:\ Windows \ SysWOW64 \ vbscript.dll”32位文件。

是的,64位位于“32”文件夹中,而32位位于“SysWOW64”文件夹中。 微软在迁移到64位时不想改变主“System32”执行文件夹的名称。

HKEY_CLASSES_ROOT \ CLSID {B54F3741-5B07-11cf-A4B0-00AA004A55E8} C:\ Windows \ System32 \ vbscript.dll

HKEY_CLASSES_ROOT \ Wow6432Node \ CLSID {B54F3741-5B07-11cf-A4B0-00AA004A55E8} C:\ Windows \ SysWOW64 \ vbscript.dll

HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ CLSID {B54F3741-5B07-11cf-A4B0-00AA004A55E8} C:\ Windows \ System32 \ vbscript.dll

HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ Wow6432Node \ CLSID {B54F3741-5B07-11cf-A4B0-00AA004A55E8} C:\ Windows \ SysWOW64 \ vbscript.dll

HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Classes \ CLSID {B54F3741-5B07-11cf-A4B0-00AA004A55E8} C:\ Windows \ SysWOW64 \ vbscript.dll

在临时目录中,我的bitrock_installer.log文件具有以下内容:

 Executing cscript //NoLogo "C:\Users\MyUser\Local Settings\postgresql_installer_1b4eec8be6\prerun_checks.vbs" Script exit code: 1 Script output: Input Error: Can not find script file "C:\Users\MyUser\Local Settings\postgresql_installer_1b4eec8be6\prerun_checks.vbs". 

原来,Windows在以下目录之间有一个符号链接:

  • C:\ Users \ cpetrie \ Local Settings \ Temp
  • C:\ Users \用户cpetrie \应用程序数据\本地的\ Temp

出于某种原因,我的“TMP”和“TEMP”用户变量引用“本地设置”路径而不是“AppData”路径。 改变这个固定我的安装问题。