如何在vista-uac開啓情況下,讀寫C:\Program Files

金卯刀 2008-08-25 02:19:11
在 Vista 開啟 UAC 的狀況下 , 假設我有一支小程式 , 上面放兩個按鈕 ,

一個按鈕按下去要產生一個文字檔的檔案到 C:\Program Files 底下(應該會無法成功 , 因為檔案會被轉移到其他目錄)

另外一個按鈕按下去一樣要產生一個文字檔的檔案到 C:\Program Files 底下 ,

但透過某一個方法(或者有某個Api函數) , 卻能夠成功的在該目錄底下產生文件。

注意需求:我是想通過某种方法或者說執行一個動作來達到這個目的,而不是通過添加manifest來使整個程序都有這個權限(其實這個方法之前有測試過,不穩定,所以放棄了)。
...全文
318 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
金卯刀 2008-08-31
  • 打赏
  • 举报
回复
to gyk120:我添加manifest,先编译为res,然后再在exe中引用。

根据您提供的http://msdn.microsoft.com/zh-cn/magazine/cc163486.aspx ,在开启uac的情况下,如果想要提升程序权限,也就只有改变程序的权限token,目前的解决办法除了添加manifest,还有一种就是重启explorer并改变其权限token。
在上面的url中,有介绍,在进程运行时,是无法改变其权限token。所以,可能我这个需求是无法实现的
zhaoyu_me 2008-08-30
  • 打赏
  • 举报
回复
把manifest编译成资源文件,然后编译EXE时包含进去就可以了,我做过。可去www.Delphibbs.com搜索
gyk120 2008-08-30
  • 打赏
  • 举报
回复
对了,你用的添加manifest是怎么添加的?用外置的有时候可能会出问题,用windows SDK 的mt.exe把manifest添加进去会出问题吗?
gyk120 2008-08-29
  • 打赏
  • 举报
回复
……那我恐怕没什么太好的办法了
http://msdn.microsoft.com/zh-cn/magazine/cc163486.aspx
MSDN上给出了解释,但是看得人云里雾里的……
金卯刀 2008-08-28
  • 打赏
  • 举报
回复
所以 gyk120提供的方法即使可以成功,但當用戶在執行某個操作時,可能需要讀寫program files,這時出現explorer 重起,會嚇人的 :)
金卯刀 2008-08-28
  • 打赏
  • 举报
回复
其實提這個問題是想解決說,不想讓應用程序產生的檔案被轉到virtualstore,而是直接產生到程序所在文件夾---program files。當然在管理員權限下,且不開啓uac,則可解決此問題。但不能要求每個客戶都這樣吧?
gyk120 2008-08-26
  • 打赏
  • 举报
回复
刚准备说添加manifest的……
我极度怀疑那个API是内核级的API而不是用户态的
例如NtCreatFile这类
lyguo 2008-08-26
  • 打赏
  • 举报
回复
还是关闭用户控制吧。
gyk120 2008-08-26
  • 打赏
  • 举报
回复
据说在UAC开启的状态下杀掉explorer进程然后重新启动explorer就行了,需要调用pskill
具体可以看看这里
http://zhangzhi124.blog.hexun.com/9300027_d.html
金卯刀 2008-08-26
  • 打赏
  • 举报
回复
目前呢是有辦法在uac開啓的情況下,將一個受限的文件夾,如c:\program files,開放讀寫,比如優化大師,在右鍵可以添加“提升管理員權限”的東東,不知哪位對此了解的?
金卯刀 2008-08-25
  • 打赏
  • 举报
回复
在開啓uac的情況下,如要產生文字檔,檔案會被放到virtualstore目錄下

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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