Как я создаю символьную ссылку в Windows Vista?

Существует много, много представлений типа «проводник». Например (из поверхностного поиска Google): https://www.jstree.com/ или https://www.uptickhq.com/react-keyed-file-browser/ [113 ] для React.js. Вам придется обрабатывать «несколько учетных записей, которые взаимодействуют друг с другом» отдельно для реализации древовидного представления.

Это, вероятно, будет в форме серверного API, который сделал это и передал данные вашему клиенту, где ваше дерево использовало информацию из API для рисования дерева, или вы, вероятно, могли бы использовать такую ​​библиотеку, как browser-request / jquery-ajax / и т.д.. извлекать данные из разных учетных записей непосредственно в браузер (учитывая, что для этого, вероятно, существуют некоторые ограничения CORS).

5
задан David Arno 13 October 2008 в 12:30
поделиться

3 ответа

Символьные ссылки в Windows создаются с помощью API-функции CreateSymbolicLink, которая берет параметры, очень похожие на параметры командной строки, принятые утилитой командной строки Mklink.

Принятие Вас правильно ссылается на JNI и Win32 заголовки SDK, Ваш код мог таким образом быть столь же простым как:

JNIEXPORT jboolean JNICALL Java_ClassName_MethodName
    (JNIEnv *env, jstring symLinkName, jstring targetName)
{
    const char *nativeSymLinkName = env->GetStringUTFChars(symLinkName, 0);
    const char *nativeTargetName = env->GetStringUTFChars(targetName, 0);

    jboolean success = (CreateSymbolicLink(nativeSymLinkName, nativeTargetName, 0) != 0);

    env->ReleaseStringUTFChars(symLinkName, nativeSymLinkName);
    env->ReleaseStringUTFChars(targetName, nativeTargetName);

    return success;
}

Обратите внимание, что это просто первое, что пришло на ум, и я не имел дело с JNI в возрастах, таким образом, я, возможно, пропустил некоторые тонкости создания этой работы...

10
ответ дан 18 December 2019 в 09:55
поделиться

Это было в моем списке для попытки из моих примечаний:

API:

http://msdn.microsoft.com/en-us/library/aa363866 (По сравнению с 85) .aspx

BOOLEAN WINAPI CreateSymbolicLink(
  __in  LPTSTR lpSymlinkFileName,
  __in  LPTSTR lpTargetFileName,
  __in  DWORD dwFlags
);

Некоторые примеры C#:

http://community.bartdesmet.net/blogs/bart/archive/2006/10/24/Windows-Vista-2D00-Creating-symbolic-links-with-C_2300_.aspx

Пример C++, это - cnp от другой статьи, которую я читал. Я не протестировал его, так используйте его с осторожностью.

typedef BOOL (WINAPI* CreateSymbolicLinkProc) (LPCSTR, LPCSTR, DWORD);

void main(int argc, char *argv[]) 
{
  HMODULE h;
  CreateSymbolicLinkProc CreateSymbolicLink_func;
  LPCSTR link = argv[1];
  LPCSTR target = argv[2];
  DWORD flags = 0;

  h = LoadLibrary("kernel32");
  CreateSymbolicLink_func =
    (CreateSymbolicLinkProc)GetProcAddress(h,
  if (CreateSymbolicLink_func == NULL) 
  {
     fprintf(stderr, "CreateSymbolicLinkA not available\n");
  } else 
  {
     if ((*CreateSymbolicLink_func)(link, target, flags) == 0) 
     {
        fprintf(stderr, "CreateSymbolicLink failed: %d\n",
        GetLastError());

  } else 
  {
     printf("Symbolic link created.");
  }
}

}

Сказав это, я не использовал бы этот код :-) Я или был бы склонен разветвить mklink или посмотреть на собственную библиотеку от jruby/jpython (Извините, я не могу посмотреть он банкомат, поскольку мое сетевое соединение является хлопьевидным). Я, кажется, вспоминаю, что jruby записал библиотеку, которая оборачивает различную posix пчелу в Java (думает как показанный, это требуется для рубинового соответствия, но не кросс-платформенное). Этой библиотекой пользуются jpython люди, которые кажутся очень довольными ею. Я был бы удивлен, не предлагает ли эта библиотека поддержки символьной ссылки.

4
ответ дан 18 December 2019 в 09:55
поделиться

Вы не могли только обратиться к командной строке и использовать mklink?

3
ответ дан 18 December 2019 в 09:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: