最近我测试了使用本机代码C/C++编写Android应用程序.问题在于使用Android NDK时进行符号链接.经过一些谷歌搜索,有人说使用cygwin.我现在安装了它.请告诉我如何在Windows 7中与cygwin建立符号链接.
提前致谢.
我刚刚在我的工作机器上安装了Cygwin,并希望使用我在家里的Linux机器上使用的.vimrc文件.
我有点不确定我在Cygwin下的bash提示符下放入了什么目录,但我想我会在那里创建一个名为.vim的子目录,对吧?
我安装了Windows的git,它工作正常(例如使用以下解决方案之一想要下载Git存储库,我需要什么(Windows机器)?).
我尝试使用repo
谷歌但它需要gpg和python 2.7.我安装了两个并且它工作正常唯一的问题是repo
脚本使用一些面向unix的功能,如符号链接和fcntl.是否有替代repo
Windows的代码?
我无法通过谷歌找到一些原生解决方案.如果有一个我会尝试将其推入谷歌repo git存储库或尝试按原样使用它.
我想以编程方式确定当前用户(或进程)是否有权创建符号链接.在Windows(Vista和更高版本)中,如果没有SeCreateSymbolicLinkPrivilege,则无法创建符号链接,默认情况下,此操作仅分配给管理员.如果尝试创建没有此权限的符号链接,则会发生Windows错误1314(客户端未保留所需的权限).
为了演示此限制,我创建了一个Windows的全新安装,以初始管理员帐户登录(通过UAC限制),并且无法在主目录中创建符号链接.
以管理员身份运行命令提示符或禁用UAC后,该命令将无错执行.
根据这篇文章,"代表用户执行的每个进程都有[access]令牌的副本".
所以我创建了一个Python脚本来查询权限.为了方便和后人,我在下面列出了一段摘录.
该脚本背后的想法是枚举所有特权并确定该进程是否具有所需的特权.不幸的是,我发现当前进程实际上并没有所需的权限,即使它可以创建符号链接.
我怀疑问题在于即使当前用户的权限没有明确包含该权限,他的组成员资格确实提供了该权限.
简而言之,我如何确定给定进程是否有权创建符号链接(而不尝试创建符号链接)?最好使用C或C++或Python中的示例,但使用Windows API的任何内容都是合适的.
def get_process_token():
token = wintypes.HANDLE()
TOKEN_ALL_ACCESS = 0xf01ff
res = OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, token)
if not res > 0: raise RuntimeError("Couldn't get process token")
return token
def get_privilege_information():
# first call with zero length to determine what size buffer we need
return_length = wintypes.DWORD()
params = [
get_process_token(),
TOKEN_INFORMATION_CLASS.TokenPrivileges,
None,
0,
return_length,
]
res = GetTokenInformation(*params)
# assume we now have the necessary length in return_length
buffer = …
Run Code Online (Sandbox Code Playgroud) 如您所知,https://android.googlesource.com/中列出了数百个项目.我想在windows机器上全部下载它们.根据谷歌的文件,
To install, initialize, and configure Repo:
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
To clone the entire platform, install repo, and run:
mkdir mydroid
cd mydroid
repo init -u https://android.googlesource.com/platform/manifest
repo sync
Run Code Online (Sandbox Code Playgroud)
但是,在我的机器中,我无法在Git Bash中"repo init",因为它说它没有python.我安装了python,但git bash无法识别它.请注意,我也将python目录设置为系统路径.如果有人能给出小费,我将不胜感激.谢谢
更新:我认为新版本的Git Bash for Windows存在问题.系统路径根本不适用于Git Bash - 我可以轻松测试系统路径是否与命令提示符一起使用.无论如何,我尝试了这个,当然它实际上运行错误.
/c/python27/python.exe ../bin/repo init -u https://android.googlesource.com/platform/manifest
Run Code Online (Sandbox Code Playgroud)
错误消息是
$ /c/python27/python.exe ../bin/repo init -u https://android.googlesource.com/platform/manifest
Traceback (most recent call last):
File "../bin/repo", line 91, in <module>
import readline
ImportError: No module named readline …
Run Code Online (Sandbox Code Playgroud) 在Windows的Docker容器内使用PHP(例如,使用DDEV)时,在容器内创建的符号链接(例如,由作曲家使用)似乎不适用于PHP的文件流。
想象下面的PHP代码
<?php
mkdir('demo-base-directory');
symlink('demo-base-directory', 'demo-symbolic-link');
var_dump(glob('demo-*', GLOB_ONLYDIR));
Run Code Online (Sandbox Code Playgroud)
如果在容器内执行,则仅输出demo-base-directory
,但是demo-symbolic-link
会丢失(该示例在Docker容器内的Linux / Unix系统上按预期工作)
array(1) {
[0]=>
string(19) "demo-base-directory"
}
Run Code Online (Sandbox Code Playgroud)
当查看主机系统中的符号链接时(例如cat demo-symbolic-link
在Windows PowerShell中使用),它显示
XSym
0019
0df68e8650ddca993c28277a5cfa3dcd
demo-base-directory
Run Code Online (Sandbox Code Playgroud)
Docker for Windows还有其他关于符号链接仿真的报告-我无法使用fgets
或file_get_contents
而是针对提到的glob
调用为文件重现此行为,请参见
共享卷安装在Windows主机系统上的基于Linux的Docker容器中,安装方式为Samba / CIFS,如下所示:
/ var / www / html上的//10.0.75.1/C类型cifs(rw,relatime,vers = 3.02,sec = ntlmsspi,cache = strict,用户名= olly,domain = OLIVERHADERB9D8,uid = 0,noforceuid,gid = 0 ,noforcegid,addr = 10.0.75.1,file_mode = 0755,dir_mode = 0777,iocharset = utf8,nounix,serverino,mapposix,nobrl,mfsymlinks,noperm,rsize = 1048576,wsize = 1048576,echo_interval = 60,actimeo = …
我现在和cygwin争夺了很长一段时间.
我搜索了如何让cygwin创建Windows风格的符号链接.
我尝试了以下方法:
export CYGWIN="winsymlinks:native"
export CYGWIN="winsymlinks:nativestrict"
export CYGWIN="winsymlinks:lnk"
Run Code Online (Sandbox Code Playgroud)
对于我的生活 - 我无法让Windows本机符号链接工作.我正在使用Windows7/64bit; cygwin版本1.7.25.
我很想得到这个解决方案.
谢谢.
cygwin ×3
windows ×3
git ×2
python ×2
symlink ×2
android ×1
android-ndk ×1
ddev ×1
docker ×1
permissions ×1
php ×1
privileges ×1
python-2.7 ×1
repository ×1
samba ×1
vim ×1
winapi ×1
windows-10 ×1