Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak otworzyc przeglądarkę z konkretnyum adresem z poziomu procedury?
Forum PHP.pl > Forum > Bazy danych > Microsoft SQL Server / MSDE
stachuf11
witam
z poziomu procedury w mssql 2005 chciałbym uruchomić przeglądarkę internetową z konkretnym adresem

próbuję użyć polecenia

  1. exec master..xp_cmdshell "c:\IEXPLORE.EXE", no_output


plik IEXPLORE.EXE skopiowałem do katalogu c więc ścieżka jest dobra

ale nie otwiera się przeglądarka, nie zgłasza żadnego błędu, executed successfull, , czy ma ktoś jakiś pomysł dlaczego nie działa to polecenie?
pozdrawiam
Stachu
vokiel
xp_cmdshell może być wyłączone ze względów bezpieczeństwa, w 2008 jest chyba domyślnie, trzeba włączyć i ustawić użytkownika, lub nadać prawa do wykonywania procedur systemowych, nie wiem jak w 2005.

Może przetestuj na początek coś prostszego, np.: notepad, nie musisz go nigdzie kopiować bo jest w zmiennych systemowych, a poza tym, nawet jak skopiujesz to działa bez innych plików, IE jednak wymaga innych plików, sam exe nie wystarczy.

Możesz też spróbować uruchomić "c:\IEXPLORE.EXE" z cmd, wtedy zobaczysz czy cokolwiek się dzieje, czy przypadkiem wina nie leży po stronie skopiowanego samego pliku exe.
stachuf11
xp_cmdshell było wyłączone, i wtedy był komunikat że jest wyłączone ale włączyłem zanim pisałem ten post,
z poziomu cmd uruchomienie c:\iexplore.exe działa bez problemu,
jak sie ustawia uzytkownikowi prawa do wykonywania procedur systemowych np. w 2008?, bo tego nie robilem, moze tak samo jest w 2005
np polecenie
  1. exec master..xp_cmdshell "dir *.exe"
  2.  
  3.  


działa bez problemu, wyswietlane są pliki z rozsz. exe w katalogu,
inne polecenie np.
  1. exec master..xp_cmdshell "ipconfig"

też działa
a notepad w cmd działa ok, a przy

  1. exec master..xp_cmdshell "notepad"


nie działa, tak samo jak iexplore.exe, wykonanie zapytania jest jako succesfull, zero błedów



nie wiem co jest powodem, w przykładach właśnie tak jest podane uruchomienie plików exe

Stachu
vokiel
Coś mi się kojarzy, że procedury składowane są uruchamiane na prawach konta uruchamiającego usługę MSSQLSERVER. Zatem może trzeba dodać tego użytkownika do grupy administratorzy.

Poza tym znalazłem:
Cytat
Now not just anyone can run this extended stored procedure. If you want to execute this extended stored procedure, you will either need to be a member of the sysadmin role, or have the xp_sqlagent_proxy_account set up on your SQL Server. If a login executing this extended stored procedure is a member of the sysadmin role then the submitted command will run under the security context associated with the SQL Server Service account in which it runs. If the login executing this procedure is not a member of the sysadmin role, then the command uses the xp_sqlagent_proxy_account login security context for determining whether operating system commands can and cannot be run. If there is no xp_sqlagent_proxy_account then using this procedure will fail for all users not in the sysadmin role.

http://sqlblog.com/blogs/tibor_karaszi/arc...ermissions.aspx
prachwal
Cytat(stachuf11 @ 9.08.2009, 14:38:28 ) *
z poziomu procedury w mssql 2005 chciałbym uruchomić przeglądarkę internetową z konkretnym adresem


do czego dążysz?
może wystarczy wget.exe do tego co chcesz zrobić
jmail
a może po prostu dwie linijki kodu w C# skompilowane do funkcji wbudowanej i nadanie praw dla NETWORK do wywoływania? Tak będzie chyba najszybciej i obejdziesz zabezpieczenia SQL Server bez konieczności ich modyfikowania.
stachuf11
temat nie jest taki prosty, po dodaniu rekordu w pewnej tabeli w mssql 2005, chcę triggerem after insert otworzyć przeglądarke z konkretnym adresem, w którym id dodanego rekordu będzie podane jako parametr, i wtedy skrypt php wykona resztę
dlatego jest mi to potrzebne


moj użytkownik systemu operacyjnego jest członkiem grupy administratorzy, a loguję się do mssql 2005
przy Windows Authentication, więc powinno byc ok, a nie jest


a mam pytanie
czy komus działa ta komenda?

  1. exec master..xp_cmdshell 'notepad'


pozdrawiam
Stachu
prachwal
http://msdn.microsoft.com/en-us/library/ms190693.aspx

trzymasz logikę po niewłaściwej stronie smile.gif a pomysł z odpalaniem iexplore jest dosłownie kosmiczy smile.gif
wyobraź sobie co by się stało jak byś zrobił update 2 rekordy, z tego co widze raczej nie obczajasz kursorów



dokładnie to co chcesz robić za pomocą PHP zrobisz w T-SQL-u (o ile potrafisz)

jeżeli chodzi o forum to bardzo dobre jest http://wss.pl/frmThreads.aspx?gid=17

teraz mam pytanie zasadnicze po co robisz synchronizację MySQL-a i MSSQL-a?
czy logika aplikacji korzystaz z MSSQL-a czy też MySQL-a
PHP służy do wyświetlania danych czy też robi coś więcej

bo widzisz jakby się okazało że aplikację masz na MSSQL-u a wyświetlasz za pomocą PHP i MySQL-a to tylko pogratulować winksmiley.jpg
stachuf11
mam udostępnione xp_cmdshell, już to wczesniej zrobiłem, momo to nie działa u mnie, w sumie na 3 serwerach juz probowałem z takim samym efektem, nie działa
czy konus dziala takie polecenie
  1. exec master..xp_cmdshell 'notepad'
  2.  


jest centrum wydruków masowych, program też do obsługi ale prymitywny w c++, nie mojego autorstwa, nie mam kodów zrodłowych, ten program pracuje na mssql 2005,
usery chcą wysyłać maila automatem do osoby ktora przysłała plik do wydruków masowych w momencie gdy załadują ten plik do programu no i bazy, więc chcę w triggerze afterinsert wywołać swoją stronę, w bazie mysql-a mam osoby przysyłające pliki do wydruku, są też ich nry kadrowe i adresy mailowe , a w nazwie przysyłanego pliku jest nr usera więc najprościej by było otworzyc stronkę z php, która wyśle maila że plik jest załądowany , dodatkowo php wykona jeszczwe pare innych operacji, ile juz osoba plików przysłała itp
dlatego chcę otworzyc to w php



mam jeszcze inny temat, chciałbym otworzyć iexplore z adresem w momencie pojawienia się nowego pliku w katalogu, jak wyłapać takie zdarzenie?
jmail
SQL Server oferuje sam w sobie możliwośc wysyłania maili - zainteresuj się Reporting Services - a do tego z MySQL'a może pobrać dane poprzez linked server. Niepotrzebne to okno.

Co do wyłapania pojawienia się nowego pliku - scheduled task uruchomiony raz na dwie trzy minuty, ktory sprawdzi czas dodania pliku i jeżeli będzie w zakresie od ostatniego uruchomienia to po prostu wywoła jakąś komendę systemowa uruchamiającą stronę.

W C# taka aplikacyjka waży jakieś 15 linii kodu - ale jeżeli chcesz otwierać IE żeby znowu maila wysłać to to bez sensu - od razu w C# wysłać maila - stuknij na PW szczegóły
stachuf11
sheduled task pomógl
dziekuję serdecznie
pozdrawiam
Stachu
prachwal
Cytat(stachuf11 @ 11.08.2009, 11:12:22 ) *
jest centrum wydruków masowych, program też do obsługi ale prymitywny w c++, nie mojego autorstwa, nie mam kodów zrodłowych, ten program pracuje na mssql 2005,
usery chcą wysyłać maila automatem do osoby ktora przysłała plik do wydruków masowych w momencie gdy załadują ten plik do programu no i bazy, więc chcę w triggerze afterinsert wywołać swoją stronę, w bazie mysql-a mam osoby przysyłające pliki do wydruku, są też ich nry kadrowe i adresy mailowe , a w nazwie przysyłanego pliku jest nr usera więc najprościej by było otworzyc stronkę z php, która wyśle maila że plik jest załądowany , dodatkowo php wykona jeszczwe pare innych operacji, ile juz osoba plików przysłała itp
dlatego chcę otworzyc to w php

mam jeszcze inny temat, chciałbym otworzyć iexplore z adresem w momencie pojawienia się nowego pliku w katalogu, jak wyłapać takie zdarzenie?


jaką wersję MSSQL-a tam macie Express, Enterprice.....

wysyłanie maili można zrealizować np. za pomocą procedury CLR lub wbudowanego mechanizmu (nie ma go w wersji Express)

Kolega wspomniał o Report Serwer, ten też potrafi wysyłać ładnie sformatowane raporty

sposób który chcesz użyć jest najgorszym z mozliwych, z wielu powodów np. co z iexplore po zakończeniu procesu wysyłania, do tego lepszy byłby wget.exe, kończy działanie po wywołaniu smile.gif
stachuf11
wersja express
dziekuję sedecznie za pomoc wskazówki i naprowadzenie
pozdrawiam
Stachu
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.