V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  geelaw  ›  全部回复第 7 页 / 共 177 页
回复总数  3521
1 ... 3  4  5  6  7  8  9  10  11  12 ... 177  
@NewYear #8 可以把程序放在只有该用户有权限控制的位置,然后设置杀毒软件的忽略名单。我自己的某些用户用 PowerShell 作为 shell ,没有被修改过。另外就是 shell 的设置不值得病毒使用,因为想要做到开机自启有无数种办法(任务计划、Run 、RunOnce 等等等等),把自己设置为 shell 是非常麻烦的一种。
写一个自定义的 shell ,然后设置目标用户的 HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System 里面的 Shell 值( REG_SZ 字符串)为你的 shell 的完整路径。

你的 shell 需要是一个 GUI 程序,并且 bitness 和系统相符,它调用 SHGetKnownFolderPath 获得用户的桌面文件夹,注意 dwFlags 应该设置 KF_FLAG_DONT_VERIFY ,然后等待这个文件夹可以被访问(或者超过固定时间),然后 CreateProcessW 启动 explorer.exe ,然后自己退出。

参考阅读:
https://learn.microsoft.com/en-us/previous-versions/windows/embedded/ms838576(v=winembedded.5)?redirectedfrom=MSDN
https://learn.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetknownfolderpath
https://learn.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessw
247 天前
回复了 royalknight 创建的主题 分享创造 写了个汉字转 hex 颜色的 js 库
kanji 是日语汉字,中文的汉字应该写 Chinese character 、hanzi 。
247 天前
回复了 meisa 创建的主题 问与答 关于美国免税州的疑问
那一栏叫做 taxes & surcharges ,并不是只有税额,另外 Oregon 的消费税是零,但无线通信税不是。看起来它代收的税额和 2024 年最新的规定不同(比法定额少)?

另外不要把“充值”和“消费”混为一谈:充值是借钱给电信公司,此操作不能代收税,因为本质上未发生交易;消费是客户支付对价获得服务,电信公司代收各种交易类型的税且计提收益,从而导致公司本身也需要交营业类型的税。
248 天前
回复了 LAMoon 创建的主题 问与答 字节跳动的 AI 标注实习生可以去吗?
数据标注是对科学进步有意义的工作,比如李飞飞教授的 ImageNet 项目,但标注工作本身的内容对学习知识和充实简历没有帮助。
https://github.com/GeeLaw/bio-site 支持 BibTeX ,设计比较朴素就是了
250 天前
回复了 CatBoy 创建的主题 Apple 你的账户已在 App Store 和 iTunes 中被禁用。
>账户余额都作废了

这很可能是违法的,中国人在中国用美国的信用卡和 Apple 交易,可能适用:中国、美国联邦、信用卡发卡地、绑定该信用卡时持卡人在美国的州、加州,的法律。我的理解是充值到 Apple 账户里的金额等同于 gift card ,在此理解下,美国联邦级别的法律禁止最后一次活动后五年内令充值余额作废,加州法律禁止余额作废。

最不济,你可以在线提交或者致信你的银行,要求他们撤销所有曾经用于该 Apple 账户的交易,至少余额部分是非常合理的,毕竟 Apple 未能完成它在此交易中承诺的对价。
改变思路,用一般关系而不是函数关系。
256 天前
回复了 ohayoo 创建的主题 数学 大佬们,一年级数学题帮忙看下
“再”是赘语,“过三天就知道结果了”和“再过三天就知道结果了”的意思是一样的,但后者可能暗示“已经等过了”并包含迫切感。确实是语文题,然后我相信我的汉语语言能力。

文心一言的答案是驴唇不对马嘴。

@Vegetable #13 配图真是措手不及!
@geelaw #9 没有超过 size_t (((φ(◎ロ◎;)φ))) 是 MSVC 只支持至多 2147483647 个元素。
new char[2,701,131,776] 会分配长度是 776 个元素的 char 数组,不是你期待的 2.51 GB 。

int main() { new char[2701131776] { }; }

这个程序在我的电脑上编译为 64 位的话可以正常运行,并且确实占用了 2.51 GB 内存,如果用 32 位编译器则编译失败,因为分配的数组规模超过了 size_t 。

抛出 std::bad_alloc 的意思就是分配失败,或许你的页面文件和实体内存不够大。

如果数据来自于文件,可以用内存映射文件,Windows 的文档是 https://learn.microsoft.com/en-us/windows/win32/memory/file-mapping
POSIX 的文档是 https://pubs.opengroup.org/onlinepubs/9699919799/functions/mmap.html
> C 语言中打印指针的值打印的是 OS 分配的虚拟地址的值吗?

不是,它打印的是这个指针的整数表示。没有要求指针的整数表示必须等于操作系统级别的虚拟地址。当然,最常见的实现里,指针的整数表示就是它指向的对象的内存位置的虚拟地址。

> 要怎么知道 OS 给这个 C 程序进程分配的虚拟地址的大小呢?

操作系统不给“C 程序”分配虚拟地址,“虚拟地址”的大小可能也不是你想要的那个答案。操作系统为每个进程提供虚拟内存,每个程序都以为自己占有全部寻址空间的虚拟内存,虚拟地址的大小和处理器有关。

有意义的问题是:一个进程如何知道自己的虚拟内存里有多少页是可读的、可写的、可执行的?这个问题无法从 C 语言的抽象层级回答,你需要操作系统的 API 。

> 并且如何知道哪一块内存大小是可以读可以写,以避免出现下面程序的 Segmentation Fault 呢?

在 C 语言看来,只有 malloc 等分配得到且未 free 、realloc 等的、取静态存储期对象的地址得到的、取自动存储期对象地址得到且该对象还未离开作用域的指针,以及它进行有定义算术运算得到的指针,才是有效的指针。解引用无效指针的效果是未定义行为,段错误仅仅是它的一种表现方式。

当然,结合操作系统 API 之后有更多获得有效指针的方式。但楼主本来的这个问题意义不明——如果你不知道一个指针怎么来的,使用它有什么意义呢?如果你知道一个指针怎么来的,那你当然知道这个指针是否有效。
@geelaw #2 更正:隐式声明是 int system();

#11 空白的参数列表的意思是没有提供参数列表信息,并没有对不上。
system 是标准库函数,链接的时侯默认是带标准库的,所以找到了。

C 语言没有函数重载,不需要复杂的名称修饰,int system(…); 和 int system(char const *); 链接的时候去找的是同一个符号,前者是隐式声明的结果,后者是标准库的声明,故隐式声明的调用可以链接到标准库函数。
楼上已经说过 return 的时候 finally 会执行,把必须执行的代码写在 finally 里面而不是后面对阅读更好。另外就是

try { throw something; }
catch { throw; } // 重新 throw
finally { other; }
another;

里面 other 是会执行的,another 不会执行。当然你可以说 another 可以挪到最外面的 catch 后面,但是这样会导致整个程序不能非平凡地使用方法,因为最外面的 catch ,在一段“正常书写”的代码里,不一定在当前方法里面。
首先,Windows 不可能要求 txt 文件一定按某种格式存储,或许你的 txt 文件里面只有三个字节。所谓 Windows 的换行是 \r\n 是指通常的 Windows 软件会这样存储换行,但如 VSCode 等代码工具可以配置换行方式。

其次,这是 C 语言的抽象,任何平台的行分隔序列、行结尾序列,在文本模式下都会在通过 FILE 进入 C 语言时被变换为 \n ,并且 \n 会在通过 FILE 进入平台时换成平台特定的序列。要获得文件的字节内容,应该用二进制操作,即 rb 、wb 。
261 天前
回复了 xbleey 创建的主题 问与答 假护照是怎么离境的
如果拿的是外国护照且该护照是真的,或者是真护照篡改而来且篡改前的护照没有被报失且篡改得很好,那么边检很可能无法意识到这一点。
喔另外 Win32 的文件 API 是支持 \ 和 / 作为通常的路径分隔符的,实际上自从 MS-DOS 2.0 和 Windows 1.0 开始就一直支持两种方向。

https://retrocomputing.stackexchange.com/a/28348
会影响到传统 exe ,但补全导致的通常不会。

考虑 a.exe /b 这里 a.exe 会优先解读 /b 为一个开关、选项。如果写 a.exe \b 则 \b 通常是指当前磁盘根目录下叫做 b 的文件。补全一般会得到带盘符的绝对路径,比如 a.exe C:/b 和 a.exe C:\b ,这两者都只能被解读为路径,所以没问题。

另外我不太懂楼主设置的代码是否只在补全路径的时候才调用——有的时候按 Tab 补全的是参数的范围,此时贸然把 \ 替换为 / 是错误的。此外,还有 UNC path ,我不记得 UNC path 把 \ 改成 / 是否有效。
1 ... 3  4  5  6  7  8  9  10  11  12 ... 177  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3928 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 50ms · UTC 05:09 · PVG 13:09 · LAX 21:09 · JFK 00:09
Developed with CodeLauncher
♥ Do have faith in what you're doing.