我需要從Web應用程序導出一些數據到Windows .reg文件創建.reg文件
我已經設法創建文件並強制下載。
$tmpfname = tempnam(sys_get_temp_dir(), "reg_".time().rand()."_");
$tmpfpath = sys_get_temp_dir() . $tmpfpath;
$handle = fopen($tmpfname, "w");
fwrite($handle, $string);
header('Content-type: application/force-download');
header('Content-Disposition: attachment; filename="'.time().'_import-'.$reg_folder.'.reg"');
header('Content-Transfer-Encoding: binary');
readfile($tmpfpath);
fclose($temp);
unlink($tmpfpath);
的問題是這樣的,當我運行下載的.reg文件,註冊表編輯器打開如預期askes有關添加信息。[...]你確定?單擊是時,我收到以下錯誤消息
無法導入[文件]:指定的文件不是註冊表腳本。您只能從註冊表編輯器中導入二進制註冊表文件。
我的文件看起來像這樣
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Martin Prikryl\WinSCP 2\Sessions\Test Site]
"HostName"="hostname"
"UserName"="username"
"PasswordPlan"="password"
<newline>
<newline>
我不完全知道如何輸出的文件與註冊表編輯器兼容的二進制格式。
根據Windows 7的「設置關聯」應用程序,註冊表文件的內容類型是「註冊條目」,但我已經嘗試在腳本中將內容類型設置爲此,但無法識別。
如果任何人都可以對此有所瞭解,那將非常感激。謝謝
嗯,這只是一種文本格式。 *你的*文件的外觀如何?你使用哪種編碼?您是否嘗試過正確的MIME類型和Content-Charset? ('/ force-download'只是愚蠢的) – mario
我試過使用內容類型「Registry Entries」,但只是輸出文件爲.reg.htm。我不確定其他類型。我的文件看起來與使用regedit直接從註冊表導入的文件完全一樣 - 但會在一秒鐘內將其添加到問題中。我還沒有嘗試設置Content-Charset。 –
該文件必須是UTF-16或UCS-2編碼。請用'wget -S'嘗試並調試retreived文件。在你的PHP腳本中的UTF-8 BOM等可以解決這個問題。 (使用hexeditor來驗證)。另外「註冊表項」不是有效的MIME類型。你使用了哪個確切的值? – mario