View Issue Details

IDProjectCategoryView StatusLast Update
0002248Far ManagerPlugins Managerpublic2013-02-26 04:18
ReporterDiRTy_GaRRyAssigned ToDrKnS 
PriorityhighSeveritymajorReproducibilityalways
Status closedResolutionfixed 
Platformx64OSWindows Server 2012OS Version6.2
Product Version3.0 
Target Version3.0Fixed in Version3.0 
Summary0002248: ANSI плагины не дают запускать приложения из папок являющихся связью
Descriptionx64 ANSI плагины под Windows Server 2012 мешают запуску exe-в с ошибкой "The request is not supported.".
Steps To Reproduce1. Запускает far только с плагином far ftp;
2. Создаём "связь каталогов" на каталог в котором есть какой-либо exe-к;
3. Пытаемся запустить exe-к из каталога-связи;
4. Получаем ошибку:
   ╔═══════════════ Ошибка ═══════════════╗
   ║ The request is not supported. ║
   ║ Ошибка выполнения ║
   ║ C:\DTB\Downloads\DTLite4461-0328.exe ║
   ╟──────────────────────────────────────╢
   ║ { OK } ║
   ╚══════════════════════════════════════╝
5. На Windows Server 2008 R2 не повторяется. Под Windows 8 x64/x86 не проверял.
Additional InformationНемного о себе:
 - Microsoft Windows Server 2012 Datacenter;
 - Far Manager, version 3.0 (build 3072) x64 откомпилированный собственноручно компилятором Visual Studio 2012;
 - Проверял со стандартным FAR FTP, а так же с ANSI x64 версией плагина NTFS File Information (ntfsfile_5.3.0_x64.7z).
TagsNo tags attached.
Build3220

Relationships

related to 0002367 closedDrKnS Проблема с запуском программ из папок, являющихся Junction/Symlink 

Activities

DrKnS

2013-01-10 13:43

administrator   bugnote:0009955

Ну наличие анси-плагинов влияет только на то, что фар таскает за собой current directory.
Возможно, у MS что-то в политиках безопасности поменялось.
Нажми в диалоге F3 и посмотри ntstatus, может там подробнее будет расписано.

DiRTy_GaRRy

2013-01-10 13:51

developer   bugnote:0009956

А я всё пытался вспомнить что нажать, для того что бы получить подробную информацию об ошибке. ;)

LastError: 0x00000032 - The request is not supported.
NTSTATUS: 0xC00000BB - The request is not supported.

P.S. Падает execute.cpp -> 1034 -> ShellExecuteEx.
P.P.S. Проводник и FAR без ANSI плагинов ошибок не выдают.

DiRTy_GaRRy

2013-01-11 12:03

developer   bugnote:0009963

Я могу чем-либо помочь?

DrKnS

2013-02-22 04:30

administrator   bugnote:0010367

Попробуй с изменениями из аттача.

Решение костыльное, но ничего лучше я пока не вижу.

DrKnS

2013-02-22 04:42

administrator  

curdir.diff (1,060 bytes)
Index: execute.cpp
===================================================================
--- execute.cpp	(revision 9712)
+++ execute.cpp	(working copy)
@@ -1013,6 +1013,17 @@
 		Global->Console->ScrollScreenBuffer(((DirectRun && dwSubSystem == IMAGE_SUBSYSTEM_WINDOWS_GUI) || SeparateWindow)?2:1);
 	}
 
+	// ShellExecuteEx fails on Windows 8 if current directory is symlink/junction
+	wchar_t CurDir[MAX_PATH];
+	bool NeedFixCurDir = Global->WinVer() >= _WIN32_WINNT_WIN8 && apiGetFileAttributes(strCurDir) & FILE_ATTRIBUTE_REPARSE_POINT;
+	if (NeedFixCurDir)
+	{
+		GetCurrentDirectory(ARRAYSIZE(CurDir), CurDir);
+		wchar_t SysDir[MAX_PATH];
+		GetSystemDirectory(SysDir, ARRAYSIZE(SysDir));
+		SetCurrentDirectory(SysDir);
+	}
+
 	DWORD dwError = 0;
 	if (ShellExecuteEx(&seInfo))
 	{
@@ -1023,6 +1034,12 @@
 		dwError = GetLastError();
 	}
 
+	// ShellExecuteEx fails on Windows 8 if current directory is symlink/junction
+	if (NeedFixCurDir)
+	{
+		SetCurrentDirectory(CurDir);
+	}
+
 	if (!dwError)
 	{
 		if (hProcess)
curdir.diff (1,060 bytes)

DiRTy_GaRRy

2013-02-22 12:17

developer   bugnote:0010370

Костыль пока не пробовал, но решил посмотреть ProcMon-м, что там происходит.

Пытаюсь запустить файл AdobeAIRInstaller.exe, который лежит в папке C:\DTB\Downloads, которая является junction-м на папку C:\Users\IVyatkin\Downloads. FAR запускается из папки C:\Program Files\Far Manager, которая является junction-м на папку C:\Projects\FAR Manager\Bin\Far3\Bin. То ли я чего-то не понимаю, то ли действительно какой-то странный лог.

DiRTy_GaRRy

2013-02-22 12:18

developer  

FAR.7z (162,948 bytes)

DrKnS

2013-02-22 22:08

administrator   bugnote:0010377

Лог странный, но подозреваю, что всё это происходит внутри shellexecute.

Issue History

Date Modified Username Field Change
2013-01-10 13:34 DiRTy_GaRRy New Issue
2013-01-10 13:43 DrKnS Note Added: 0009955
2013-01-10 13:51 DiRTy_GaRRy Note Added: 0009956
2013-01-11 12:03 DiRTy_GaRRy Note Added: 0009963
2013-02-22 04:29 DrKnS File Added: curdir.diff
2013-02-22 04:30 DrKnS Note Added: 0010367
2013-02-22 04:40 DrKnS File Deleted: curdir.diff
2013-02-22 04:40 DrKnS File Added: curdir.diff
2013-02-22 04:40 DrKnS File Deleted: curdir.diff
2013-02-22 04:42 DrKnS File Added: curdir.diff
2013-02-22 12:17 DiRTy_GaRRy Note Added: 0010370
2013-02-22 12:18 DiRTy_GaRRy File Added: FAR.7z
2013-02-22 22:08 DrKnS Note Added: 0010377
2013-02-26 04:18 DrKnS Build => 3220
2013-02-26 04:18 DrKnS Status new => closed
2013-02-26 04:18 DrKnS Assigned To => DrKnS
2013-02-26 04:18 DrKnS Resolution open => fixed
2013-02-26 04:18 DrKnS Fixed in Version => 3.0
2013-04-14 00:01 DrKnS Relationship added related to 0002367