有没有高手解答一下,c:\programData是用干什么的?搜狗等大公司为什么要把数据放到这个目录下呢?

zrdongjiao 2013-09-22 08:12:09
很多公司的数据文件会放到这个目录下,为什么要这样做呢?

难道可执行目录下不行嘛?

如果是担心对数据文件没有写的权限,那么你做过实验验证过嘛?

我想看到你的实验结论,我自己试验过,是完全可以的。
...全文
2555 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
bsnry 2013-11-21
  • 打赏
  • 举报
回复
引用 38 楼 akirya 的回复:
[quote=引用 35 楼 horris 的回复:] 发现很多人不仅开发是用的管理员帐户,程序运行也用管理员帐户,这是个很不好的习惯。 要知道Windows是个多用户的OS,其他大多数OS也是这样。文件系统权限控制不基于用户还能基于什么?管理员帐户无所不能,所以很危险,一旦你的程序有什么漏洞,就会造成灾难性的后果。大客户一般不允许在管理员帐户下运行第三方程序的,绝大多数程序都要运行在普通用户权限下。 我的习惯是只有安装软件和驱动时才进管理员,其他的尽量登录普通用户做。 在WinXP下,Windows/Program Files等文件夹,只有管理员才有权限修改、写入、删除,普通用户只有读和执行权限,另外普通用户对自己新建的文件夹有完全控制权限。 XP对每个用户都有一个私有文件夹,默认在C:\Documents and Files\用户名\下面,每个用户对这个私有文件夹有完全控制权限。 程序主文件和配置文件等一般安装在Program Files下,有些公用共享DLL放在Windows\System32下,硬件驱动安装在Windows\System32\Driver下。 以上安排,可以看出,普通用户是不能修改删除程序主文件的,这是出于安全考虑,比如管理员安装并配置好了程序,用户张三运行得很好,李四却把程序删除了或修改了配置,这不乱套了? 如果程序有些文件需要能让使用它的用户可以修改,比如可以让用户修改某些配置文件,那么这些文件一般放到用户的私有文件夹下,默认是C:\Documents and Files\用户名\AppData\应用程序名\下面。这样张三的配置不会被李四修改。 Windows有API可以取得用户私有文件夹的路径,.net也有,具体是哪个我忘了,可以google。 Win7的情况没有仔细研究,似乎Program Data的作用类似于XP用户的私有文件夹,Native和.net API的用户私有文件路径似乎也被自动指向了这里,这样对程序的运行和维护更方便了。 因为XP时代,Windows受到了很多漏洞攻击,为了加强安全性,Vista增加了UAC特性:每当程序需要管理员权限才能运行下去的时候,会出现Consent对话框,让用户确认。如果当前用户是普通用户,则需要输入管理员权限的密码,如果当前用户就是管理员,则需要确认一下。换句话说,即使你是登录到管理员,默认也是没有某些管理员权限的。UAC的设计无疑强化了安全,每当某个程序要做系统层面的修改时,用户必须主动同意,这样避免了很多恶意程序在用户不知情的情况下修改系统。 但是UAC给用户一种繁琐的体验,所以Win7修改了UAC,一个是用户可以关闭它,另一个是程序可以明确声明自已需要管理员权限。微软强烈建议不要关闭UAC。 于是对于Win7开发的程序,增加了一个“需要管理员权限”的选项,选了这个选项,Win7就知道这个程序需要管理员权限,如果你登录的是管理员用户,那么不会弹出UAC让你确认,直接运行之。如果你登录的是普通用户,那么对不起,你还是要输入管理员的密码的。 一个“需要管理员权限”的程序,它应该只有少部分功能是需要管理员权限的,其它部分的运行,应该不会出UAC对话框。不过我没有Win7上做过验证。 总之,给Win7开发程序,要意识到自己程序大部分是不可以被普通用户修改的,如果有内部文件需要允许普通用户修改,要把它放在用户私有文件夹中,用API取得这个文件夹,然后再读写。另一些文件的读写,比如通过“打开”、“保存”对话框取得的文件名,当然是用户指定哪个文件就读写哪个了,出现权限问题是用户使用不当。 测试程序必须在普通用户下,开发也尽量在普通用户下。
早在win2000时代就有权限控制了,但前提是ntfs分区。 由于xp没强制ntfs,多数人还是fat32,fat32下管理员权限形同虚设。 XP时代,除了安装软件,基本上一直是user,从不装杀毒软件,从未中毒过。[/quote]
引用 37 楼 akirya 的回复:
[quote=引用 33 楼 zrdongjiao 的回复:] [quote=引用 32 楼 akirya 的回复:] [quote=引用 31 楼 zrdongjiao 的回复:] [quote=引用 30 楼 akirya 的回复:] 用
HRESULT SHGetFolderPath(          HWND hwndOwner,
    int nFolder,
    HANDLE hToken,
    DWORD dwFlags,
    LPTSTR pszPath
);
获取 CSIDL_LOCAL_APPDATA 或 CSIDL_APPDATA
i aggree with you 不过从这个api 可以看出win7的兼容性多么的糟糕, 很多xp下的软件 不能直接安装在系统盘了,小心跑不起来。 即使是所谓的兼容模式也不行, 日志,配置这些文件的位置 不行啊。 呵呵 [/quote] 这个...... win2000起就已经这样了[/quote] 反复验证发现, 所谓的右键以管理员身份运行, 对日志,配置等数据写权限的文件, win7的users组 是无法在系统盘下产生这些文件的。 以管理员身份运行, 似乎只对注册表的写权限比较奏效。 欢迎高手们补充。 这是我目前发现的。 [/quote] 很典型的安装程序,比如QQ。[/quote] ++ win7的需要有权限的数据文件 的路劲如果是 系统盘的话, 非管理员无法成功写。 数据文件并不会被系统转移到其他地方去。 不知道说转义的人是从什么地方获取到的资料。
  • 打赏
  • 举报
回复
引用 35 楼 horris 的回复:
发现很多人不仅开发是用的管理员帐户,程序运行也用管理员帐户,这是个很不好的习惯。 要知道Windows是个多用户的OS,其他大多数OS也是这样。文件系统权限控制不基于用户还能基于什么?管理员帐户无所不能,所以很危险,一旦你的程序有什么漏洞,就会造成灾难性的后果。大客户一般不允许在管理员帐户下运行第三方程序的,绝大多数程序都要运行在普通用户权限下。 我的习惯是只有安装软件和驱动时才进管理员,其他的尽量登录普通用户做。 在WinXP下,Windows/Program Files等文件夹,只有管理员才有权限修改、写入、删除,普通用户只有读和执行权限,另外普通用户对自己新建的文件夹有完全控制权限。 XP对每个用户都有一个私有文件夹,默认在C:\Documents and Files\用户名\下面,每个用户对这个私有文件夹有完全控制权限。 程序主文件和配置文件等一般安装在Program Files下,有些公用共享DLL放在Windows\System32下,硬件驱动安装在Windows\System32\Driver下。 以上安排,可以看出,普通用户是不能修改删除程序主文件的,这是出于安全考虑,比如管理员安装并配置好了程序,用户张三运行得很好,李四却把程序删除了或修改了配置,这不乱套了? 如果程序有些文件需要能让使用它的用户可以修改,比如可以让用户修改某些配置文件,那么这些文件一般放到用户的私有文件夹下,默认是C:\Documents and Files\用户名\AppData\应用程序名\下面。这样张三的配置不会被李四修改。 Windows有API可以取得用户私有文件夹的路径,.net也有,具体是哪个我忘了,可以google。 Win7的情况没有仔细研究,似乎Program Data的作用类似于XP用户的私有文件夹,Native和.net API的用户私有文件路径似乎也被自动指向了这里,这样对程序的运行和维护更方便了。 因为XP时代,Windows受到了很多漏洞攻击,为了加强安全性,Vista增加了UAC特性:每当程序需要管理员权限才能运行下去的时候,会出现Consent对话框,让用户确认。如果当前用户是普通用户,则需要输入管理员权限的密码,如果当前用户就是管理员,则需要确认一下。换句话说,即使你是登录到管理员,默认也是没有某些管理员权限的。UAC的设计无疑强化了安全,每当某个程序要做系统层面的修改时,用户必须主动同意,这样避免了很多恶意程序在用户不知情的情况下修改系统。 但是UAC给用户一种繁琐的体验,所以Win7修改了UAC,一个是用户可以关闭它,另一个是程序可以明确声明自已需要管理员权限。微软强烈建议不要关闭UAC。 于是对于Win7开发的程序,增加了一个“需要管理员权限”的选项,选了这个选项,Win7就知道这个程序需要管理员权限,如果你登录的是管理员用户,那么不会弹出UAC让你确认,直接运行之。如果你登录的是普通用户,那么对不起,你还是要输入管理员的密码的。 一个“需要管理员权限”的程序,它应该只有少部分功能是需要管理员权限的,其它部分的运行,应该不会出UAC对话框。不过我没有Win7上做过验证。 总之,给Win7开发程序,要意识到自己程序大部分是不可以被普通用户修改的,如果有内部文件需要允许普通用户修改,要把它放在用户私有文件夹中,用API取得这个文件夹,然后再读写。另一些文件的读写,比如通过“打开”、“保存”对话框取得的文件名,当然是用户指定哪个文件就读写哪个了,出现权限问题是用户使用不当。 测试程序必须在普通用户下,开发也尽量在普通用户下。
早在win2000时代就有权限控制了,但前提是ntfs分区。 由于xp没强制ntfs,多数人还是fat32,fat32下管理员权限形同虚设。 XP时代,除了安装软件,基本上一直是user,从不装杀毒软件,从未中毒过。
  • 打赏
  • 举报
回复
引用 33 楼 zrdongjiao 的回复:
[quote=引用 32 楼 akirya 的回复:] [quote=引用 31 楼 zrdongjiao 的回复:] [quote=引用 30 楼 akirya 的回复:] 用
HRESULT SHGetFolderPath(          HWND hwndOwner,
    int nFolder,
    HANDLE hToken,
    DWORD dwFlags,
    LPTSTR pszPath
);
获取 CSIDL_LOCAL_APPDATA 或 CSIDL_APPDATA
i aggree with you 不过从这个api 可以看出win7的兼容性多么的糟糕, 很多xp下的软件 不能直接安装在系统盘了,小心跑不起来。 即使是所谓的兼容模式也不行, 日志,配置这些文件的位置 不行啊。 呵呵 [/quote] 这个...... win2000起就已经这样了[/quote] 反复验证发现, 所谓的右键以管理员身份运行, 对日志,配置等数据写权限的文件, win7的users组 是无法在系统盘下产生这些文件的。 以管理员身份运行, 似乎只对注册表的写权限比较奏效。 欢迎高手们补充。 这是我目前发现的。 [/quote] 很典型的安装程序,比如QQ。
horris 2013-11-19
  • 打赏
  • 举报
回复
数据库的权限控制与OS不是一回事,一般是基于数据库用户的。如果是开发数据库应用,那么数据库文件放在哪里一般是不用考虑的,数据库管理员会为你建库。数据库对应的OS文件,对于普通用户也是不可写的,但是数据库用户可以通过数据库引擎间接修改。在数据库安装时,数据库引擎被配置为以管理员权限在后台运行,对于Windows来讲,它是一个Service。某些数据库,如MS SQL Server Express,是几个文件,这些文件可以放在Program Files下,数据库引擎保证了它们可以被数据库用户间接修改。对于桌面型个人数据库,如Access,它是一个文件,也没有后台引擎,就比较麻烦了,这类数据库只能是个人使用了,换句话说,张三用得了,李四就用不了。
horris 2013-11-19
  • 打赏
  • 举报
回复
发现很多人不仅开发是用的管理员帐户,程序运行也用管理员帐户,这是个很不好的习惯。 要知道Windows是个多用户的OS,其他大多数OS也是这样。文件系统权限控制不基于用户还能基于什么?管理员帐户无所不能,所以很危险,一旦你的程序有什么漏洞,就会造成灾难性的后果。大客户一般不允许在管理员帐户下运行第三方程序的,绝大多数程序都要运行在普通用户权限下。 我的习惯是只有安装软件和驱动时才进管理员,其他的尽量登录普通用户做。 在WinXP下,Windows/Program Files等文件夹,只有管理员才有权限修改、写入、删除,普通用户只有读和执行权限,另外普通用户对自己新建的文件夹有完全控制权限。 XP对每个用户都有一个私有文件夹,默认在C:\Documents and Files\用户名\下面,每个用户对这个私有文件夹有完全控制权限。 程序主文件和配置文件等一般安装在Program Files下,有些公用共享DLL放在Windows\System32下,硬件驱动安装在Windows\System32\Driver下。 以上安排,可以看出,普通用户是不能修改删除程序主文件的,这是出于安全考虑,比如管理员安装并配置好了程序,用户张三运行得很好,李四却把程序删除了或修改了配置,这不乱套了? 如果程序有些文件需要能让使用它的用户可以修改,比如可以让用户修改某些配置文件,那么这些文件一般放到用户的私有文件夹下,默认是C:\Documents and Files\用户名\AppData\应用程序名\下面。这样张三的配置不会被李四修改。 Windows有API可以取得用户私有文件夹的路径,.net也有,具体是哪个我忘了,可以google。 Win7的情况没有仔细研究,似乎Program Data的作用类似于XP用户的私有文件夹,Native和.net API的用户私有文件路径似乎也被自动指向了这里,这样对程序的运行和维护更方便了。 因为XP时代,Windows受到了很多漏洞攻击,为了加强安全性,Vista增加了UAC特性:每当程序需要管理员权限才能运行下去的时候,会出现Consent对话框,让用户确认。如果当前用户是普通用户,则需要输入管理员权限的密码,如果当前用户就是管理员,则需要确认一下。换句话说,即使你是登录到管理员,默认也是没有某些管理员权限的。UAC的设计无疑强化了安全,每当某个程序要做系统层面的修改时,用户必须主动同意,这样避免了很多恶意程序在用户不知情的情况下修改系统。 但是UAC给用户一种繁琐的体验,所以Win7修改了UAC,一个是用户可以关闭它,另一个是程序可以明确声明自已需要管理员权限。微软强烈建议不要关闭UAC。 于是对于Win7开发的程序,增加了一个“需要管理员权限”的选项,选了这个选项,Win7就知道这个程序需要管理员权限,如果你登录的是管理员用户,那么不会弹出UAC让你确认,直接运行之。如果你登录的是普通用户,那么对不起,你还是要输入管理员的密码的。 一个“需要管理员权限”的程序,它应该只有少部分功能是需要管理员权限的,其它部分的运行,应该不会出UAC对话框。不过我没有Win7上做过验证。 总之,给Win7开发程序,要意识到自己程序大部分是不可以被普通用户修改的,如果有内部文件需要允许普通用户修改,要把它放在用户私有文件夹中,用API取得这个文件夹,然后再读写。另一些文件的读写,比如通过“打开”、“保存”对话框取得的文件名,当然是用户指定哪个文件就读写哪个了,出现权限问题是用户使用不当。 测试程序必须在普通用户下,开发也尽量在普通用户下。
u012879806 2013-11-19
  • 打赏
  • 举报
回复
引用 2 楼 91program 的回复:
从目录的名称来看,是 OS 提供给应用存贮数据的。为什么要放在这里,是想长久保存程序的个性化设置,可能可以达到程序卸载后再安装时(可安装在不同的目录),也能使用这些数据吧。
明显意淫
引用 11 楼 zzdmfk 的回复:
当然是权限的问题,尤其是win7以上系统,64位系统,就算你把配置文件放程序目录下面,它也会自动帮你转移到别处去,而程序可以正常操作这些配置文件。
根本不会转移, 你自己试试,没权限的话,日志文件都不产生,如果是debug程序,直接奔溃报错.
引用 27 楼 akirya 的回复:
[quote=引用 24 楼 combobox2013 的回复:] [quote=引用 9 楼 akirya 的回复:] [quote=引用 8 楼 zrdongjiao 的回复:] [quote=引用 7 楼 akirya 的回复:] 默认安装目录D:\Program Files (x86)或D:\Program Files在非管理员的情况下是不可写的。 但安装时,大多数软件都是使用管理员权限安装所以限制不大。 当前用户的目录没特殊设置的话是可写的,除非手动设置目录权限
笔误了吧,是C,非D。 你说的 管理员权限安装,如果是非管理员权限运行,可以成功写嘛。 第二个问题: 一个程序权限之多,恐怕不是一篇网文能够涵盖,能搞清楚的, 比如安装程序的权限, 程序本身的权限, 当前操作系统的权限, 等等 有没有微软比较权威的解释。 [/quote] 拷贝错了 文件权限管理是基于用户的,用那个用户启动程序,程序就有对应的权限,没那么复杂。[/quote] 请做实验验证,别信口开河 请做实验验证,谢谢。 user组的用户,可以说,在programfiles里建个文件夹都不让,我说的是手工新建。 还有,如果靠代码 新建一个 txt文本,都不让。 自己实验。 别信口开河。 当然你可能会说,程序提权 。 我没提权,我是右键管理员身份运行,依然无法产生文本。 还有,我下载了飞秋, 飞秋的日志聊天记录存放路径是可以修改的,我试过了, 如果存放programfile里,如果是user组, 飞秋直接提示,存放位置失败。 [/quote] 验证啥? 我说的没错,user的用户本来就不可以在C:\Program Files新建文件文件夹。 选中文件夹 右键 属性 安全 Users组 只有读取和执行 列出文件夹内容 读取,没写入[/quote] 也就这仁兄的答案靠谱。 日志,数据等文件必须移植到 local 或者 all user上,否则普通用户没有写日志的权限
zrdongjiao 2013-11-14
  • 打赏
  • 举报
回复
引用 32 楼 akirya 的回复:
[quote=引用 31 楼 zrdongjiao 的回复:] [quote=引用 30 楼 akirya 的回复:] 用
HRESULT SHGetFolderPath(          HWND hwndOwner,
    int nFolder,
    HANDLE hToken,
    DWORD dwFlags,
    LPTSTR pszPath
);
获取 CSIDL_LOCAL_APPDATA 或 CSIDL_APPDATA
i aggree with you 不过从这个api 可以看出win7的兼容性多么的糟糕, 很多xp下的软件 不能直接安装在系统盘了,小心跑不起来。 即使是所谓的兼容模式也不行, 日志,配置这些文件的位置 不行啊。 呵呵 [/quote] 这个...... win2000起就已经这样了[/quote] 反复验证发现, 所谓的右键以管理员身份运行, 对日志,配置等数据写权限的文件, win7的users组 是无法在系统盘下产生这些文件的。 以管理员身份运行, 似乎只对注册表的写权限比较奏效。 欢迎高手们补充。 这是我目前发现的。
  • 打赏
  • 举报
回复
引用 31 楼 zrdongjiao 的回复:
[quote=引用 30 楼 akirya 的回复:] 用
HRESULT SHGetFolderPath(          HWND hwndOwner,
    int nFolder,
    HANDLE hToken,
    DWORD dwFlags,
    LPTSTR pszPath
);
获取 CSIDL_LOCAL_APPDATA 或 CSIDL_APPDATA
i aggree with you 不过从这个api 可以看出win7的兼容性多么的糟糕, 很多xp下的软件 不能直接安装在系统盘了,小心跑不起来。 即使是所谓的兼容模式也不行, 日志,配置这些文件的位置 不行啊。 呵呵 [/quote] 这个...... win2000起就已经这样了
zrdongjiao 2013-11-13
  • 打赏
  • 举报
回复
引用 30 楼 akirya 的回复:
HRESULT SHGetFolderPath(          HWND hwndOwner,
    int nFolder,
    HANDLE hToken,
    DWORD dwFlags,
    LPTSTR pszPath
);
获取 CSIDL_LOCAL_APPDATA 或 CSIDL_APPDATA
i aggree with you 不过从这个api 可以看出win7的兼容性多么的糟糕, 很多xp下的软件 不能直接安装在系统盘了,小心跑不起来。 即使是所谓的兼容模式也不行, 日志,配置这些文件的位置 不行啊。 呵呵
  • 打赏
  • 举报
回复
HRESULT SHGetFolderPath(          HWND hwndOwner,
    int nFolder,
    HANDLE hToken,
    DWORD dwFlags,
    LPTSTR pszPath
);
获取 CSIDL_LOCAL_APPDATA 或 CSIDL_APPDATA
combobox2013 2013-11-13
  • 打赏
  • 举报
回复
引用 27 楼 akirya 的回复:
[quote=引用 24 楼 combobox2013 的回复:] [quote=引用 9 楼 akirya 的回复:] [quote=引用 8 楼 zrdongjiao 的回复:] [quote=引用 7 楼 akirya 的回复:] 默认安装目录D:\Program Files (x86)或D:\Program Files在非管理员的情况下是不可写的。 但安装时,大多数软件都是使用管理员权限安装所以限制不大。 当前用户的目录没特殊设置的话是可写的,除非手动设置目录权限
笔误了吧,是C,非D。 你说的 管理员权限安装,如果是非管理员权限运行,可以成功写嘛。 第二个问题: 一个程序权限之多,恐怕不是一篇网文能够涵盖,能搞清楚的, 比如安装程序的权限, 程序本身的权限, 当前操作系统的权限, 等等 有没有微软比较权威的解释。 [/quote] 拷贝错了 文件权限管理是基于用户的,用那个用户启动程序,程序就有对应的权限,没那么复杂。[/quote] 请做实验验证,别信口开河 请做实验验证,谢谢。 user组的用户,可以说,在programfiles里建个文件夹都不让,我说的是手工新建。 还有,如果靠代码 新建一个 txt文本,都不让。 自己实验。 别信口开河。 当然你可能会说,程序提权 。 我没提权,我是右键管理员身份运行,依然无法产生文本。 还有,我下载了飞秋, 飞秋的日志聊天记录存放路径是可以修改的,我试过了, 如果存放programfile里,如果是user组, 飞秋直接提示,存放位置失败。 [/quote] 验证啥? 我说的没错,user的用户本来就不可以在C:\Program Files新建文件文件夹。 选中文件夹 右键 属性 安全 Users组 只有读取和执行 列出文件夹内容 读取,没写入[/quote] 你好,如你所言,那么你开发的程序,如果程序涉及到日志、配置文件,你会把这些文件放到哪里呢? 谢谢回答,不胜感激
向立天 2013-11-13
  • 打赏
  • 举报
回复
引用 26 楼 combobox2013 的回复:
[quote=引用 25 楼 xianglitian 的回复:] 帖子看到这儿我有点看不懂了 就你帖子的问题 配置文件想写到哪这个看开发习惯 我开发的习惯就是所有东西都写在安装目录下 注册表都很少写 当然我没在什么大公司呆过 个人习惯而已
你好,参考24楼的实验 我刚才做了实验,确实如此 你新建一个对话框工程,使用Cfile类,看是否可以在安装目录里新建一个文件。 生成exe后,你拷贝到c:programfiles里, 然后换个User组的用户登录,试试 [/quote]我为什么要做这个实验呢?
  • 打赏
  • 举报
回复
引用 24 楼 combobox2013 的回复:
[quote=引用 9 楼 akirya 的回复:] [quote=引用 8 楼 zrdongjiao 的回复:] [quote=引用 7 楼 akirya 的回复:] 默认安装目录D:\Program Files (x86)或D:\Program Files在非管理员的情况下是不可写的。 但安装时,大多数软件都是使用管理员权限安装所以限制不大。 当前用户的目录没特殊设置的话是可写的,除非手动设置目录权限
笔误了吧,是C,非D。 你说的 管理员权限安装,如果是非管理员权限运行,可以成功写嘛。 第二个问题: 一个程序权限之多,恐怕不是一篇网文能够涵盖,能搞清楚的, 比如安装程序的权限, 程序本身的权限, 当前操作系统的权限, 等等 有没有微软比较权威的解释。 [/quote] 拷贝错了 文件权限管理是基于用户的,用那个用户启动程序,程序就有对应的权限,没那么复杂。[/quote] 请做实验验证,别信口开河 请做实验验证,谢谢。 user组的用户,可以说,在programfiles里建个文件夹都不让,我说的是手工新建。 还有,如果靠代码 新建一个 txt文本,都不让。 自己实验。 别信口开河。 当然你可能会说,程序提权 。 我没提权,我是右键管理员身份运行,依然无法产生文本。 还有,我下载了飞秋, 飞秋的日志聊天记录存放路径是可以修改的,我试过了, 如果存放programfile里,如果是user组, 飞秋直接提示,存放位置失败。 [/quote] 验证啥? 我说的没错,user的用户本来就不可以在C:\Program Files新建文件文件夹。 选中文件夹 右键 属性 安全 Users组 只有读取和执行 列出文件夹内容 读取,没写入
combobox2013 2013-11-13
  • 打赏
  • 举报
回复
引用 25 楼 xianglitian 的回复:
帖子看到这儿我有点看不懂了 就你帖子的问题 配置文件想写到哪这个看开发习惯 我开发的习惯就是所有东西都写在安装目录下 注册表都很少写 当然我没在什么大公司呆过 个人习惯而已
你好,参考24楼的实验 我刚才做了实验,确实如此 你新建一个对话框工程,使用Cfile类,看是否可以在安装目录里新建一个文件。 生成exe后,你拷贝到c:programfiles里, 然后换个User组的用户登录,试试
向立天 2013-11-13
  • 打赏
  • 举报
回复
帖子看到这儿我有点看不懂了 就你帖子的问题 配置文件想写到哪这个看开发习惯 我开发的习惯就是所有东西都写在安装目录下 注册表都很少写 当然我没在什么大公司呆过 个人习惯而已
combobox2013 2013-11-13
  • 打赏
  • 举报
回复
引用 9 楼 akirya 的回复:
[quote=引用 8 楼 zrdongjiao 的回复:] [quote=引用 7 楼 akirya 的回复:] 默认安装目录D:\Program Files (x86)或D:\Program Files在非管理员的情况下是不可写的。 但安装时,大多数软件都是使用管理员权限安装所以限制不大。 当前用户的目录没特殊设置的话是可写的,除非手动设置目录权限
笔误了吧,是C,非D。 你说的 管理员权限安装,如果是非管理员权限运行,可以成功写嘛。 第二个问题: 一个程序权限之多,恐怕不是一篇网文能够涵盖,能搞清楚的, 比如安装程序的权限, 程序本身的权限, 当前操作系统的权限, 等等 有没有微软比较权威的解释。 [/quote] 拷贝错了 文件权限管理是基于用户的,用那个用户启动程序,程序就有对应的权限,没那么复杂。[/quote] 请做实验验证,别信口开河 请做实验验证,谢谢。 user组的用户,可以说,在programfiles里建个文件夹都不让,我说的是手工新建。 还有,如果靠代码 新建一个 txt文本,都不让。 自己实验。 别信口开河。 当然你可能会说,程序提权 。 我没提权,我是右键管理员身份运行,依然无法产生文本。 还有,我下载了飞秋, 飞秋的日志聊天记录存放路径是可以修改的,我试过了, 如果存放programfile里,如果是user组, 飞秋直接提示,存放位置失败。
combobox2013 2013-11-13
  • 打赏
  • 举报
回复
引用 1 楼 hdg3707 的回复:
这个没有为什么,这个目录是微软操作系统产生的,只不过被别人也利用了。和权限无关,相反,在这个目录里写东西反而需要权限,在非系统所在的盘里写东西却没有权限。
请做实验验证,谢谢。 user组的用户,可以说,在programfiles里建个文件夹都不让,我说的是手工新建。 还有,如果靠代码 新建一个 txt文本,都不让。 自己实验。 别信口开河。 当然你可能会说,程序提权 。 我没提权,我是右键管理员身份运行,依然无法产生文本。 还有,我下载了飞秋, 飞秋的日志聊天记录存放路径是可以修改的,我试过了, 如果存放programfile里,如果是user组, 飞秋直接提示,存放位置失败。
zrdongjiao 2013-09-27
  • 打赏
  • 举报
回复
引用 20 楼 hdg3707 的回复:
这个是权限问题,并不是设成管理员权限,就只能是以管理员身份登录的用户才可以运行程序,普通用户或其它用户就不能运行程序。 管理员权限是最高的,拥有所有权限,普通用户拥有部分权限。这是两者的区别
你举个 实际例子行不, 比如你在程序开发中,处于什么目的,将 工程属性修改为 管理员权限的。 谢谢
hdg3707 2013-09-27
  • 打赏
  • 举报
回复
需要操作文件或更改其它设置时要把程序设成管理员权限
hdg3707 2013-09-26
  • 打赏
  • 举报
回复
这个是权限问题,并不是设成管理员权限,就只能是以管理员身份登录的用户才可以运行程序,普通用户或其它用户就不能运行程序。
管理员权限是最高的,拥有所有权限,普通用户拥有部分权限。这是两者的区别
加载更多回复(19)

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧