V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  geelaw  ›  全部回复第 93 页 / 共 178 页
回复总数  3544
1 ... 89  90  91  92  93  94  95  96  97  98 ... 178  
2018-10-08 09:09:23 +08:00
回复了 szzhiyang 创建的主题 程序员 %AppData% 和 %LocalAppData% 的区别?
@RainyH2O #22 当然不是。

Designed for Windows 的软件需要在 Uninstall a program 里面出现。如果给全部用户安装,你需要把信息写进 HKLM,如果给当前用户安装,你需要写进 HKCU。有些软件会注册 COM 对象 /接口,安装到哪里决定了是写到 HKLM\SOFTWARE\Classes 还是 HKCU\Software\Classes。

安装后修改这个设置最常见、通用和简单的方法是卸载再重新安装。

此外 #21 已经提到,能用 API 就不要用环境变量。最后,那些位置一般是默认安装位置,很多软件可以修改安装位置的。
2018-10-08 01:00:53 +08:00
回复了 szzhiyang 创建的主题 程序员 %AppData% 和 %LocalAppData% 的区别?
@ryh #3 @roshad #4

你们提到的是 WinRT API,这是完全不同的模型。WinRT roaming app data 是存在于 Isolated Storage 里面的 RoamingState 和 Settings 里面的,每个 app 的 isolated storage 在目前的情况下默认位置是 %LOCALAPPDATA%\Packages\<Package Family Name> 下。

@ggsimidar #5 他们说的和 %APPDATA% 漫游无关。

@sobigfish #8 我个人的看法是不会。

Roaming user profile 是 Windows domain 的功能,工作原理就是登录的时候从服务器 copy user profile 里面可以 roam 的部分( user profile 通常是 %USERPROFILE%,但是并不是每个内容都可以 roam ),注销的时候把可以 roam 的部分复制到 domain controller。这在很慢的网络环境下是不可能的(例如离开了通过 Ethernet 连入公司网络的情况),此外,应该避免用户同时登录 forest 里面的多台电脑。

我曾经在 Microsoft 有账户,但我没有观察这些数据是否 roam 过。这个功能的使用频率在逐渐降低。更多阅读材料请见

https://blogs.msdn.microsoft.com/oldnewthing/20050630-20/?p=35143/

@szzhiyang 回到楼主的问题,如果你不是为了企业开发软件,你的 app data 基本上不可能 roam。从逻辑上来说,你应该如此选择存放的位置:%APPDATA% 存和机器无关的数据,且不能太大。%LOCALAPPDATA% 存和机器有关的数据、从云同步的数据、大的数据以及任何删除都没有实际损失的数据。

举个例子,Outlook 把用户的 mail signature 存在 %APPDATA%\Microsoft\Signatures 里,但是用户邮箱的缓存数据存在 %LOCALAPPDATA%\Microsoft\Outlook 里面。前者是因为 mail signature 没有一个统一的云服务,如果用户刚好在启用了 roaming profiles 的 domain 里,则用户可以享受在公司里换电脑之后不需要重新设置签名档的好处。后者是因为,首先邮箱数据的缓存可能很大,其次,邮箱的缓存是一个删除了也没有损失的内容(可以重新从服务器下载),最后,邮箱缓存是从邮件服务器(例如 Exchange Server )来的,逻辑上就不需要用 roaming profile 同步。

最后:不要用 APPDATA 和 LOCALAPPDATA 去访问这两个文件夹。使用 SHGetKnownFolderPath (.NET 的 System.Environment.GetFolderPath )。

@Vhc #10

%AppData% = 用户的漫游数据
%UserProfile% = 用户配置文件夹,现在通常是 C:\Users\用户名,默认情况下用户的 known folders 是这个文件夹的子文件夹,但是用户可以修改
%AllUsersProfile% = 所有用户的配置文件夹,注意这不是公用文件夹,修改需要管理员权限,但是创建新文件和修改自己创建的文件不需要(每个用户自动有自己创建的文件夹、文件的全部控制权)
%ProgramFiles% = 整机软件应该默认被安装到的位置,如果你运行在 WoW 64 上,则自动变成 (x86) 版本,如果你是 x64/x86 系统的 x64/x86 进程,则通常是 C:\Program Files
%SystemRoot% = 系统的目录,通常是 C:\Windows
%SystemDrive% = 系统所在的驱动器字母,通常是 C:
%Temp% = %Tmp% = 当前会话(注销之前)的临时文件夹,注意,同一个用户多次登录系统,每次可能有不同的临时文件夹(该情况多见于 Windows Server )

我觉得这几个东西就没有什么相像的地方。为什么 TEMP 和 TMP 都有呢?兼容性。https://blogs.msdn.microsoft.com/oldnewthing/20150417-00/?p=44213/

此外,能使用 API 就不要用环境变量。因为使用环境变量有可能被启动你的进程骗(这可以是好事也可以是坏事)。
2018-10-07 04:29:31 +08:00
回复了 showgood163 创建的主题 问与答 卧槽,写着文档呢, win10 就自动装上 qq 浏览器了!
我从没听说 Microsoft 和腾讯有这种合作。

另外,dllhost.exe 是一个宿主进程,它本身没有什么“实质性”的业务逻辑,它的作用是把 COM object 放在单独的进程里。你可以把它理解为 svchost.exe 和 rundll32.exe 或者 Python interpreter 这样的东西。如果一个软件用 Python 脚本安装软件,说“ Python 安装了这个软件”不是很有意义。


隔离 COM object 的主要作用是安全和防止 COM object 的代码崩溃影响到访问 COM object 的进程,File Explorer 大量使用这类宿主方式。例如,防止缩略图提取器或者预览器让 File Explorer 崩溃。
2018-10-06 16:33:03 +08:00
回复了 hronro 创建的主题 Windows 最新的 Windows 10 LTSC 如何使用 WSL?
@des #4
@Vhc #6

那下一次可以改成 Long-Term Servicing Distribution
2018-10-06 13:48:39 +08:00
回复了 xxx749 创建的主题 程序员 codewars 要怎么查看通不过的例子啊
此外我去搜索了一下题目,你后面循环的 body 也是错误的。
2018-10-06 13:47:07 +08:00
回复了 xxx749 创建的主题 程序员 codewars 要怎么查看通不过的例子啊
Body 的第一行就错了?
2018-10-06 13:41:46 +08:00
回复了 Shaowen 创建的主题 问与答 onedrive 如何同步 Win10 电脑所有文件?
把文件都存在被同步的位置就行了。

不要尝试同步 Windows、Program Files 和 AppData 这些位置,不会有好处的。
@Aniark #13 赞,组策略是官方的方式(改注册表是 not officially supported 方式)
如果你已经卸载了 OneDrive,你可以直接删除 Shell namespace 里面对应 OneDrive 的 CLSID。我现在不在电脑旁边,没法给具体的步骤。
2018-10-05 13:41:00 +08:00
回复了 1piece 创建的主题 强迫症 有时候真的感觉 Windows10 就是个智障
@1piece #25 ……我建议你真真读一下 #1 的选项二。那个选项的作用是通知从屏幕上 dismiss 就消失,而不是从不显示通知。如果你不介意因为没有在电脑前而错过一个 app 的通知的话,开这个选项没什么坏处。
2018-10-04 22:41:00 +08:00
回复了 1piece 创建的主题 强迫症 有时候真的感觉 Windows10 就是个智障
@1piece #16 我觉得你的回复让我很迷惑,因为 #1 的选项二不需要你“点进去”一个通知也不会显示在通知中心。点击不留存在通知中心的 app 的通知的右上角的叉子既不会激活通知,也不会让它显示在通知中心。

你是想实现这个 app 的通知 你进行某种一步即可完成的操作 和 你不操作 对于留存有不同效果,且 操作的惟一效果 是 不留存 吗?是这样的话目前必须靠 app 提供这个选项。

此外我在 iOS 上尝试了一下,它不允许用一个操作就 dismiss 通知且该通知不显示在通知中心。
@gamecmt #7 那些是 properties,就像 Python 的 properties 也不需要括号就能访问 getter/setter。

任何正常的语言都会把 COM 绑定到该语言最合适的构造。

VBA 代码不需要括号,是因为 BASIC 里面调用 sub/function 并丢弃返回值(也就是整个语句是一个调用的时候)的语法就是

被调用者的名字 参数 1, 参数 2, ...

没有参数就没有列表,所以后面是空的。
@xgfan #5 那个部分从 Windows 95 引入以来就叫做“通知区域”,它的名字从来不是“系统托盘”。

https://blogs.msdn.microsoft.com/oldnewthing/20030910-00/?p=42583/

Windows 平台的习惯在过去 23 年有很大的变化。实际上之前 app 需要在通知区域的最重要的目的是允许用户干净地退出程序,如果不是这个目的,程序完全可以选择隐藏所有的 UI 元素,只有需要的时候显示,并采用进程间通信的方法识别是否有程序在后台运行。此外,通知区域是通知中心出现之前的统一显示通知的 UI。

https://docs.microsoft.com/en-us/windows/desktop/uxguide/winenv-notification
我觉得原因是你拿到了一个 function 但是你没有 call。

这就类似

def func(): # 你们知道下面应该有缩进的,据说会被吃掉?
print('hello, world')

func

不会发生任何事情一样。

你应该写 pptSel.Slides(1).Shapes(1).Copy() 和 Paste() 和 Delete() 等。我没有尝试过。

@lihongjie0209 #1 @junjieyuanxiling #3

COM 是语言和平台无关的。
2018-10-04 14:56:16 +08:00
回复了 1piece 创建的主题 强迫症 有时候真的感觉 Windows10 就是个智障
@1piece #6 #9 你看到过 #1 的第二个选项了吗?此外对于 Windows Defender,你可以点 Show fewer notifications 来去掉没什么异常的通知。
2018-10-04 12:22:19 +08:00
回复了 1piece 创建的主题 强迫症 有时候真的感觉 Windows10 就是个智障
@geelaw *好两个 => 两个
2018-10-04 12:22:07 +08:00
回复了 1piece 创建的主题 强迫症 有时候真的感觉 Windows10 就是个智障
自从通知中心存在以来,通知的留存模型应该没变过。你有好两个选项。

一是使用支持 dismiss 的 app,例如 Calendar 的通知有一个 dismiss 按钮。

二是阻止一个 app 的通知进入通知中心,你可以在 Settings | System | Notifications & actions 里面点不想要通知的 app,然后关闭 Show notifications in action center。这样选择之后,这个 app 的通知里的 → 会变成 ×,而且无论是点 × 还是等它超时,结果都不会进入通知中心。

如果你想要关掉一个 app 的某些具体的通知,你只有选项一。
2018-10-04 11:54:45 +08:00
回复了 quinaeus 创建的主题 全球工单系统 Win10 资管管理器中图片缩略图无故消失
@quinaeus #8 你没有开这个功能,意思是你的文件永远离线可访问吗?
1 ... 89  90  91  92  93  94  95  96  97  98 ... 178  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1236 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 18:02 · PVG 02:02 · LAX 10:02 · JFK 13:02
Developed with CodeLauncher
♥ Do have faith in what you're doing.